Skip to main content

Full text of "The NASTRAN Programmer's Manual"

See other formats


NASA SP-223 



THE NASTRAN PROGRAMMER'S MANUAL 



Frank J. Douglas 
Editor 



September 1970 




Scientific and Technical Information Division 

OFFICE OF TECHNOLOGY UTILIZATION 1970 

NATIONAL AERONAUTICS AND SPACE ADMINISTRATION 

V^ashington, D.C. 



For sale from Computer Softwore Management and Information Center (COSMIC) 
Barrows Hall, University of Georgia, Athens, Georgia 30601 - Price $15.00 



FOREWORD 



For many decades the art of structural analysis remained essentially stagnant, not because of 
lack of theoretical understanding but because of limitations on capability for numerical computa- 
tion. The analyst was constrained to apply approximate continuum solutions of the equations of 
elasticity to his structure which yield, for the most part, average stress and strain distributions 
not taking account of localized structural features. Fortunately, most aircraft could be approxi- 
mated by a collection of beam-like one-dimensional structures-that is, structures where state of 
deformation could be adequately described by a set of functions of a single space coordinate. But, 
spacecraft structures and very high speed aircraft began to depart appreciably from such idealiza- 
tions. Structural analysts began to adapt theory to aircraft structures viewed as an assemblage of 
a finite number of elastic components over 20 years ago. In one of the first papers on the subject, 
Levy in 1947 isolated each component, placed it in static equilibrium, and regarded the internal 
forces as the unknown quantities. The principle of minimum strain energy was applied to determine 
the correct internal force distribution. Subsequent papers by Schuerch, Levy, Turner, Clough, 
Martin and others took the deformations of the various discrete components of the structure as the 
unknown quantities, instead of the forces on the components. The correct deformation pattern was 
obtained by applying the principle of minimum potential energy. In all of these applications, 
matrix formulations were developed early as a means of organizing the bookkeeping. Numerical 
solutions were, for the most part, reduced to the processes of addition, subtraction, multiplica- 
tion, inversion and finding the characteristic roots and vectors of matrices. But the analyst was 
limited at first by the desk calculator. The inversion of ten by ten matrices by Grout's or an 
equivalent method was a formidable exercise. It is no wonder that the earliest users of digital 
computers in the aircraft companies were the Structures and Dynamics Divisions of the Engineering 
Department. It was indeed fortunate that the birth of the digital computer came when it did. 

But the development of software for structural analysis became a separated and individualistic 
activity with little or no coordination. There grew a tendency toward proprietary secrecy. Little 
compatability was developed among the various structural analysis programs throughout the country. 
The present program, called NASTRAN. is an attempt to bring together the best features of the state 



of the art into a single progra. for the analysis of large complex structures. The result .s an 
exemplary beginning. It will not satisfy every requirement at first. But. it fon.s a framework 
for an enormous step forward in the development of a co^non base. The NASA staff and contractors 
who conceived of and took part in this important new development are to be contended for the.r 
foresight and skill . 



Dr. Raymond L. Bisplinghoff 
Dean, School of Engineering 
Massachusetts Institute of Technology 



INTRODUCTION TO THE NASTRAN PROGRAM 

, The acronym NASTRAN is formed from NAsa STRuctural ANalysis. NASTRAN is a 
general purpose digital computer program for the analysis of large complex struc- 
tures and has its origins in the research councils of NASA. During the annual 
review of NASA's research program in the area of structural dynamics by Douglas 
Michel of Headquarters in January 1964, it became apparent that there was consid- 
erable effort by many of the Centers to develop computer programs for structural 
analysis, designed to meet each of the Centers' particular needs. It was sug- 
gested that perhaps a single program could meet all their needs. The Office of 
Advanced Research and Technology appointed a committee with representation from 
eight NASA Centers to study this possibility. Thus formed, the AD HOC GROUP ON 
COMPUTER METHODS IN STRUCTURAL ANALYSIS was constituted as follows: 

Ames Research Center Richard M. Beam 

Perry P. Polentz 

Flight Research Center Richard J. Rosecrans 

Goddard Space Flight Center Thomas G. Butler 

Peter A. Smi dinger 

Jet Propulsion Laboratory Marshall E. Alper 

Robert M. Bamford 
Langley Research Center Herbert J. Cunningham 

Lewis Research Center William C. Scott 

James D. McAleese 

Manned Spacecraft Center C. Thomas Modlin, Jr. 

William W . Renegar 

Marshall Space Flight Center Robert L. McComas 

Adjoint Member: James Johnson from Wright Patterson Air Force Base 

Chairman: Thomas G. Butler 

After six months of investigation, the Ad Hoc Group reported to Headquarters that 
there was no digital program in existence which had broad, uniform capabilities 

i (3/1/70) 



in the three interdependent disciplines of analytical mechanics, numerical 
methods, and computer programming. The Group did observe that ther^ was consider- 
able capability dispersed throughout the aerospace industry which had not been 
collected into a single program. They found also that there was a tendency toward 
proprietary secrecy which inhibited exchange of information. Communication was 
further hindered by the lack of compatibility between any two companies' struc- 
tural analysis programs. The Ad Hoc Group recommended that NASA sponsor an en- 
tirely new program aimed at bringing together all the best in the state-of-the- 
arts. NASA is indebted to many people, but especially to these individuals in 
the several companies for assisting the Ad Hoc Group during its investigations: 

M. John Turner of Boeing Seattle 

W. J. Crichlaw of Lockheed Burbank 

Paul H. Denke of Douglas Long Beach 

Robert J. Melosh of Philco Western Development Labs 

Richard H. Gallagher of Bell of Buffalo 

P. L. Marshall of North American Columbus 

Stanley Kaufman of Martin Baltimore 

Headquarters endorsed the recommendations of the Ad Hoc Group and commissioned 

them to draw up a set of specifications. Fortunately, the papers from the first 

Wright Field Conference, "On Matrix Methods in Structural Analysis", were at hand 

to consult. The objectives of the specifications are now being achieved: 

Combine the best of the state-of -the-arts in 3 disciplines. 

Incorporate both the Force and the Displacement approaches of finite elements, 

Organize to be General Purpose. 

Embody large three dimensional structural capability. 

Establish computer independence. 

Provide for modification without cascading effects. 

Build in the maximum of user convenience. 

Document all aspects to gain maximum visibility. 

The contract to implement the NASTRAN specifications was awarded to Computer 
Sciences Corporation (CSC) with MacNeal Schwendler, Martin Baltimore, and later 

11 (3/1/70) ^ 



Ben Aerosystems Company as sub-contractors. The team that CSC assembled was one 
that identified strongly with the project. The designers were Dr. Richard H. 
MacNeal , Dr. Paul R. Peabody, Prof. C. W. McCormick, Mr. Stanley Kaufman, Mr. 
Thomas L. Clark, and Mr. David B. Hall. Except for Dr. Peabody, all of the 
designers were also involved with the implementation. The team of computer pro- 
grammers was led by Mr. Keith H. Redner. The other principal members of the 
implementation team were Richard S. Pyle, Carl Hennrich, Steven E. Wall, Frank J. 
Douglas, Howard Dielmann, and David Herting. The quality of the NASTRAN program 
and its documentation is testimony to the purposeful ness with which this implemen- 
tation team applied themselves. We in NASA extend our sincere gratitude to all 
these men. This team has often exceeded the state-of -the-arts guidelines that 
were set down. A few examples are: the Segment File Allocator, the General 
Input/Output Module, matrix decomposition with active columns, the inclusion of 
scalar nonl i neari ties in control system dynamics, the generality in the plot 
module, and the development of the self-contained "inverse power with shifts" 
module for eigenvalue extraction. The overall design of the program has set a new 
standard for general purpose programs of any discipline. The framework used in 
NASTRAN can be disassociated from elastic structures and be applied to other dis- 
ciplines, because there are no semantic implications in the executive operations. 
The program abounds in service code, that threads through every step of the prob- 
lem physics, providing convenience to the analyst. 

The NASTRAN Project personnel at Goddard Space Flight Center also strongly 
identified with the program. They are: Richard D. McConnell, William R. Case, 
James B. Mason, William L. Cook, and Edward F. Puccinelli. Their unflagging 
efforts in debugging and editing have been indispensable. 

Many policy decisions had to be made as to the content of NASTRAN. The total 
framework of the program was considered to be the most important; i.e., commen- 
surate large problem capability from basic statics for general conditions to 
advanced dynamics; with an executive system that could manage problems unbounded 
by core; was compact in its space requirements; could restart problems; could 
operate efficiently over different computers; and still be maintainable. This is 

ill (3/1/70) 



a costly venture and one could not expect the program to be complete in all its 
details. We wanted it to be complete in its principals and essentials. Conse- 
quently, some aspects were of necessity postponed. 

It was decided that only basic finite elements would be included to deal with 
one and two dimensional elastic relationships such as beams, plates and axisym- 
metric shells. Economy of running time for the state-of -the-arts elements was a 
determining factor in their selection More sophisticated and new elements have 
appeared in the state-of-the-art since the inception of this program, which can 
easily be incorporated. 

An interesting type of decision erupted as a result of third generation 
computers. The relative costs of input-output and sorting operations had to be 
compared against regeneration whenever calculated data was used subsequently. In 
the majority of instances, the decision was made in favor of regeneration because 
the quantity of input data (usually from single precision engineering sources) was 
small; the compute time for regeneration was usually less than the associated 
input-output time; the quantity of generated data was usually orders of magnitude 
greater (and in double precision) compared to the engineering source data, and 
the read and write operations and subsequent logical operations for sorting and 
merging were very time-consuming. 

In the matter of eigenvalues, the range of demands is such that no single 
current routine will satisfy all requirements. Two principal types of routines 
were decided upon; those that transform the whole matrix for simultaneous deter- 
mination of roots and those that perform separate operations on the original 
matrix for each root extracted. The former is more efficient for a large number 
of roots, while the latter type is more efficient for a few roots of large 
matrices. Solution of complex matrices is performed only by the root tracking 
schemes and not by transformation methods, because existing transformation tech- 
niques for complex matrices are too expensive. 

There was advice from many sources that the time was not right for a large 
general purpose program, because the flux in hardware and software was too great. 
The fear was that the endeavor would result in a program which would be obsolete 

iv (3/1/70) 



before it was finished. The rapidly changing computer technology had the opposite 
effect on the NASTRAN Project. The situation forced men to think more generally 
so that viability could be preserved in spanning the gap between second and third 
generation machines and anticipating the impact of fourth generation computers. 
The decision was made to write a single program in FORTRAN IV with some exception- 
al areas to be written in assembly language. FORTRAN IV version 13 in its various 
forms on different computers seems to have stabilized out as a language that will 
have currency for a reasonable time in the future. More than 99% of the program 
is written in this FORTRAN. The program is modular so that updating is a matter 
of revamping material wtthin a module without modifying its external appearances. 

The task of writing a program that performed efficiently on different manu- 
facturers' computers forced many decisions. It was very tempting to capitulate 
to the disparities amongst the computers and resign ourselves to the rationale 
that for each computer, there would be a different version of NASTRAN. Fortu- 
nately, the decision was made to create just one version of NASTRAN. In some 
respects, this decision might have been viewed by some as having a corroding 
effect on the program. The conception derives from the condition that code was 
not written simultaneously for all computers. It was written first for the 
"development computer - the IBM Direct Coupled 7094/7040"; subsequently, it was 
tried on the others. Failures of programming designs on subsequent machines 
decreased the set of admissable procedures that remained in the intersection of 
the languages of all required computers. Fortunately, the remaining subset is 
sufficiently versatile, that it was possible to achieve commonality without 
becoming primitive. To date, the computers for which NASTRAN has been adopted are: 
IBM 7094/7044, UNIVAC 1108, CDC6600, and IBM 360. One serious lack of common 
intersection was in core management. NASTRAN is so large that logic demands that 
it be designed in multiple links horizontally and in many levels of overlay 
vertically with the additional ability to manage core dynamically. When it was 
found that Control Data did not provide for this type of core management, the 
decision was made to write a loader to replace that which Control Data offered 
with their SCOPE 3 operating system. The basic set of NASTRAN functional modules 

V (3/1/70) 



is thus preserved as a single unit for all computers. Problems in trouble-shoot- 
ing and maintenance are thus confined to a single source. This decision affected 
the compatibility with time sharing of the IBM TSS type. An entirely different 
version of NASTRAN would be required to adapt the program to the TSS system. 
Well-founded doubts also persist about its eventual execution efficiency. Conse- 
quently, NASTRAN is not designed to operate under a time sharing system. 

Originally, a number of conveniences were going to be built into NASTRAN. 
As design evolved, the number of convenience nominees expanded. It was finally 
decided that conveniences having to do with the preparation of input data in 
NASTRAN format were properly external to the program. All such routines could be 
classified as NASTRAN auxiliary programs. Examples of this classification are: 
the automatic generation of grid points and elastic elements for an analytically 
known geometry, the computation of equation ordering for the minimization of the 
bandwidth of non zero elements in the stiffness matrix, or the formatting of 
experimental data as input to the General Element. Hundreds of such programs will 
probably be written and their lives will probably be short. For these reasons, 
they are considered external auxiliaries. Circulation of announcements about such 
programs will be made to users of the program, so they can be obtained easily. 

Hopefully, the framework that has been built has also been sufficiently well 
fleshed out that it will serve a sizable portion of the large problems in the 
structural analysis community currently. It is intended that new capability be 
added or outdated capability be replaced by augmenting or replacing modules. 
An entire chapter in the Programmer's Manual has been devoted to the topic of 
Modifications and Additions in anticipation of serving this particular activity. 
The traffic in the development of new and increasingly versatile elastic modules 
is expected to be the most active. As analysts increase their use of the program, 
their detailed needs will become better defined with the consequent result that 
the traffic in "convenience code" will also be expected to increase. It is our 
strong desire that all such new features be called to the attention of the 
NASTRAN Project so that these ideas and routines can be disseminated to a broad 

audience. Thomas G. Butler 

NASTRAN Project Manager 
Goddard Space Flight Center 
Greenbelt, Maryland 
vi (3/1/70) 



PREFACE TO THE NASTRAN PROGRAMMER'S MANUAL 

The Programmer's Manual is one of three manuals that constitute the documentation for NASTRAN, 
the other two being the Theoretical Manual and the User's Manual. The Programmer's Manual is 
divided into six major sections: section 1, NASTRAN Programming Fundamentals; section 2, Data 
Block and Table Descriptions; section 3. Subroutine Descriptions; section 4, Module Functional 
Descriptions; section 5, NASTRAN - Operating System Interfaces; and section 6, Modifications and 
Additions to NASTRAN. 

Section 1 is a general overview of the program, and as such it should be read as background 
material for all sections which follow. 

Section 2 contains descriptions of the data blocks, which are the principal means of data 
communication between the program's functional modules (a module is defined to be a group of sub- 
routines which perform a specific function) and the NASTRAN Executive System. Two indexes for the 
data block descriptions, one sorted alphabetically on data block names and the other sorted 
alphabetically on the names of the modules from which the data blocks are output, are given in 
sections 2.2.1 and 2.2.2 respectively. Section 2 also contains a) descriptions of tables, both 
core and noncore resident, maintained by the NASTRAN Executive System and b) descriptions of mis- 
cellaneous tables which are accessed by a class of modules. Alphabetical indexes for these tables 
are given at the beginning of sections 2.4 and 2.5 respectively. 

Sections 3 and 4 contain descriptions of the (utility or general purpose) subroutines and 
modules of NASTRAN respectively. The reader is directed to the alphabetical indexes, sorted on 
entry point names, in sections 3.2 and 4.1.3 respectively for these sections. An index to the 
Module Functional Descriptions, sorted alphabetically on module names, is given in section 4.1.2. 
The reader is urged to read the introductory material to sections 3 and 4 before using these 
sections. 

Section 5 treats computer and operating system dependent matters such as operating system 
control cards and generation of the absolute (executable) NASTRAN system. 

Section 6 describes the means by which modifications and additions to NASTRAN are implemented. 

The learning of any new system, whether it be an operating system or a large applications 
system like NASTRAN, is made more difficult than it ought to be because of the use by the designers 

vii (3/1/70) 



of the system of new mnemonics, acronyms, phrases and "buzz" words. In order to aid the reader In 
learning such connonly used NASTRAN terms, a single source reference, section 7, the NASTRAN 
Dictionary, of the User's Manual Is provided. The programner Is advised to secure a copy of at 
least this section of the User's Manual for his clay- to-day reference. 



vill (3/1/70) 



TABLE OF CONTENTS 

Section Page No. 
1. NASTRAN PROGRAMMING FUNDAMENTALS 

1 . 1 PROGRAM OVERVIEW 1.1-1 

1.1.1 Objecti ves 1.1-1 

1.1.2 Program Organization 1.1-3 

1.2 NASTRAN EXECUTIVE SYSTEM 1.2-1 

1.2.1 Introduction 1.2-1 

1.2.2 Executive Operations During the Preface 1.2-4 

1.2.3 Executive Operations During Problem Solution 1.2-9 

1.3 WORD SIZE AND COMPUTER HARDWARE CONSIDERATIONS 1.3-1 

1.3.1 Introduction 1.3-1 

1.3.2 Alphanumeric Data 1.3-2 

1.3.3 Word Packing 1.3-2 

1.4 SYSTEM BLOCK DATA SUBPROGRAM (SEMDBD) 1.4-1 

1.5 THE OPEN CORE CONCEPT 1.5-1 

1.5.1 Introduction 1.5-1 

1.5.2 Definition of Open Core 1.5-1 

1.5.3 Example of an Application of Open Core 1.5-1 

1.6 NASTRAN INPUT/OUTPUT 1.6-1 

1 .6.1 Introduction 1 .6-1 

1.6.2 Use of the Operating System Input File 1.6-1 

1.6.3 Use of the Operating System Output File 1.6-2 

1.6.4 GIN0 1.6-3 

1.7 NASTRAN MATRIX ROUTINES 1.7-1 

1.7.1 Introduction 1.7-1 

1.7.2 Matrix Packing and Unpacking 1.7-1 

1.7.3 The Nested Vector Set Concept Used to Represent Components 

of Displacement 1 .7-2 

1.8 GENERATION OF MATRICES 1.8-1 

1.8.1 The ECPT Data Block 1.8-1 



ix (3/1/70) 



TABLE OF CONTENTS (Continued) 

Section Page No. 

1,8,2 Structural Elements 1.8-2 

1.9 TERMINATION PHILOSOPHY AND DIAGNOSTIC MESSAGES 1,9-1 

1.10 RESTARTS IN NASTRAN 1.10-1 

2. DATA BLOCK AND TABLE DESCRIPTIONS 

2 . 1 INTRODUCT ION 2.1-1 

2.2 DATA BLOCK DESCRIPTIONS - GENERAL COMMENTS AND INDEXES 2.2-1 

2.2.1 Index for Data Block Descriptions Sorted on Data Block Names 2.2-3 

2.2.2 Index for Data Block Descript-'ons Sorted Alphabetically by Module.. 2.2-11 

2.3 DATA BLOCK DESCRIPTIONS 2.3-1 

2.3.1 Data Blocks Output From Module IFPl 2.3-1 

2.3.2 Data Blocks Output From Module IFP 2.3-5 

2.3.3 Data Blocks Output From Module GPl 2.3-31 

2.3.4 Data Blocks Output From Module GP2 2.3-36 

2.3.5 Data Blocks Output From Module PLTSET 2.3-37 

2.3.6 Data Blocks Output From Module PL0T 2.3-40 ■ 

2.3.7 Data Blocks Output From Module GP3 2.3-41 , 

2.3.8 Data Blocks Output From Module TAl 2.3-45 

2.3.9 Data Blocks Output From Module SMAl 2.3-56 

2.3.10 Data Blocks Output From Module Sf^2 2.3-58 

2.3.11 Data Blocks Output From Module GPWG 2.3-59 

2.3.12 Data Blocks Output From Module SMA3 2.3-60 

2.3.13 Data Blocks Output From Module GP4 2.3-61 

2.3.14 Data Blocks Output From Module GPSP 2.3-63 

2.3.15 Data Blocks Output From Module MCEl 2.3-64 

2.3.16 Data Blocks Output From Module MCE2 2.3-65 

2.3.17 Data Blocks Output From Module SCEl 2.3-67 

2.3.18 Data Blocks Output From Module SMPl 2.3-70 

2.3.19 Data Blocks Output From Module RBMGl 2.3-73 

2.3.20 Data Blocks Output From Module RBMG2 2.3-75 

2.3.21 Data Blocks Output From Module RBMG3 2.3-77 

2.3.22 Data Blocks Output From Module RBMG4 2.3-78 

X (3/1/70) 



TABLE OF CONTENTS (Continued) 



Section 



2.3.23 


Data Bl 


2.3.24 


Data Bl 


2.3.25 


Data Bl 


2.3.26 


Data Bl 


2.3.27 


Data Bl 


2.3.28 


Data Bl 


2,3.29 


Data Bl 


2.3.30 


Data Bl 


2.3.31 


Data Bl 


2.3.32 


Data Bl 


2.3.33 


Data Bl 


2.3.34 


Data Bl 


2.3.35 


Data Bl 


2.3.36 


Data Bl 


2.3.37 


Data Bl 


2.3.38 


Data 31 


2.3.39 


Data Bl 


2.3.40 


Data Bl 


2.3.41 


Data Bl 


2.3.42 


Data Bl 


2.3.43 


Data Bl 


2.3.44 


Data Bl 


2.3.45 


Data Bl 


2.3.46 


Data Bl 


2.3.47 


Data Bl 


2.3.48 


Data Bl 


2.3.49 


Data Bl 


2.3.50 


Data Bl 


2.3.51 


Element 


2.3.52 


Element 



Page No. 

locks Output From Module SSGl 2.3-79 

locks Output From Module SSG2 2.3-80 

locks Output From Module SSG3 2.3-81 

locks Output From Module SSG4 2.3-83 

locks Output From Module SDRl 2.3-84 

locks Output From Module SDR2 2.3-88 

locks Output From Module DPD 2.3-114 

locks Output From Module READ 2.3-125 

locks Output From Module DSMGl 2.3-128 

locks Output From Module SMP2 2.3-129 

locks Output From Module DSMG2 2.3-130 

locks Output From Module PLAl 2.3-132 

locks Output From Module ADD 2.3-137 

locks Output From Module PLA2 2.3-138 

locks Output From Module PLA3 2.3-139 

locks Output From Module PLA4 2.3-140 

locks Output From Module CASE 2.3-141 

locks Output From Module MTRXIN 2.3-142 

locks Output From Module GKAD 2.3-143 

locks Output From Module CEAD 2.3-146 

locks Output From Module VDR 2.3-149 

locks Output From Module FRRD 2.3-158 

locks Output From Module SDR3 2.3-160 

locks Output From Module XYTRAN 2.3-175 

locks Output From Module RAND0M 2.3-179 

locks Output From Module TRD 2.3-181 

locks Output From Module GKAM 2.3-183 

locks Output From Module DDRl 2.3-184 

Element Stress Output Data Description 2.3-185 

Element Force Output Data Description 2.3-189 



xi (3/1/70) 



TABLE OF CONTENTS (Continued) 

^ ^j Page No. 

Section — ^ 

2.3.53 Data Blocks Output From Module DDR2 2.3-192 

2.4 EXECUTIVE TABLE DESCRIPTIONS 2.4-1 

2.4.1 Executive Tables Which are Permanently Core Resident 2.4-2 

2.4.2 Executive Tables Not Permanently Core Resident 2.4-15 

2.5 MISCELLANEOUS TABLE DESCRIPTIONS 2.5-1 

2.5.1 Miscellaneous Tables Which are Permanently Core Resident 2.5-2 

2.5.2 Miscellaneous Tables Not Permanently Core Resident 2.5-6 

3. SUBROUTINE DESCRIPTIONS 

3 . 1 INTRODUCTION 3.1-1 

3.2 ALPHABETICAL INDEX OF ENTRY POINTS FOR SUBROUTINE DESCRIPTIONS 3.2-1 

3.3 EXECUTIVE SUBROUTINE DESCRIPTIONS 3.3-1 

3.3.1 XSEMl (Executive Sequence Monitor, Preface) 3.3-1 

3.3.2 BTSTRP (Bootstrap Generator) 3.3-2 

3.3.3 SEHINT (Sequence Monitor Initialization) 3.3-3 

3.3.4 GNFIAT (Generate FIAT) 3.3-5 

3.3.5 ENDSYS (End-of-Link) 3.3-6 

3.3.6 SEARCH (Search, Load, and Execute Link) 3.3-8 

3.3.7 XSEMi (Link i Main Program, i = 2,3,...) 3.3-9 

3.3.8 XSEMXX (Sequence Monitor - Deck Generator) 3.3-11 

3.3.9 GNFIST (Generate FIST) 3.3-12 

3.3.10 XE0T (End-of-Tape) 3.3-14 

3.3.11 SSWTCH (Sense Switches) 3.3-15 

3.3.12 C0NMSG (Console Message Writer) 3.3-16 

3.3.13 TTLPRG (Title Page Writer) 3.3-17 

3.4 UTILITY SUBROUTINE DESCRIPTIONS 3.4-1 

3.4.1 MAPFNS (Machine Word Functions) 3.4-1 

3.4.2 0PEN (Initiate Activity on a File) 3.4-3 

3.4.3 WRITE (Write Data in a Logical Record) 3.4-4 

3.4.4 CLi3SE (Terminate Activity on a File) 3.4-5 

3.4.5 READ (Read Data From a Logical Record) 3.4-6 



xii (3/1/70) 



TABLE OF CONTENTS (Continued) 

Section Page No. 

3.4.6 FWDREC (Forward Space One Logical Record) 3.4-8 

3.4.7 BCKREC (Backspace One Logical Record) 3.4-9 

3.4.8 REWIND (Position File to the Load Point) 3.4-10 

3.4.9 E0F (Write an End-of-File) 3.4-11 

3.4.10 SKPFIL (Skip Files Forward or Backward) 3.4-12 

3.4.11 XGIN0 (GIN0 Utility Routine) 3.4-13 

3.4.12 GIN0 (Genersl Input/Output Routine) 3.4-15 

3.4.13 JIPNC0R (Transmit Logical Records To/From Core Storage) 3.4-20 

3.4.14 G0PEN (Short Form for Subroutine 0PEN With Header Record 

Processing) 3.4-22 

3.4.15 FREAD (Short Form for Subroutine READ) 3.4-23 

3.4.16 WRTTRL (Write Trailer) 3.4-24 

3.4.17 FNAME (File Name) 3.4-25 

3.4.18 CLSTAB (Close a GIN0 File and Write a Nonzero Trailer) 3.4-26 

3.4.19 XRCARD (Executive Free-Field Card Data Conversion Routine) 3.4-27 

3.4.20 RCARD (Fixed Field Card Data Conversion Routine) 3.4-32 

3.4.21 TAPBIT (Tape Bit Test) 3.4-35 

3.4.22 PEXIT (Problem Exit) 3.4-36 

3.4.23 TMT0G0 (Time-To-Go) 3.4-37 

3.4.24 PAGE (Page Heading) 3.4-38 

3.4.25 MESAGE (Message) 3.4-39 

3.4.26 MSGWRT (Message Writer) 3.4-40 

3.4.27 USRMSG (User Message Writer) 3.4-41 

3.4.28 MATDUM (Matrix Dump (Print) Routine) 3.4-42 

3.4.29 TABPRT (Table Printer) 3.4-43 

3.4.30 PREL0C (Position Data Block to Requested Record) 3.4-44 

3.4.31 S0RT (Sort a Table) 3.4-45 

3.4.32 GMMATD (General Matrix Multiply and Transpose - Double 

Precision) 3.4-49 

3.4.33 GMMATS (General Matrix Multiply and Transpose - Single Precision).. 3.4-52 

3.4.34 INVERD (Double Precision In Core Inverse Routine) 3.4-53 



xiii (3/1/70) 



TABLE OF CONTENTS (Continued) 

Section Page No. 

3.4.35 INVERS (Single Precision In Core Inverse Routine) 3.4-54 

3.4.36 PREMAT (Material, Property Utility). 3.4-55 

3.4.37 PRETRD (Utility for Modules Which Use the CSTM Data Block - 

Double Precision Version) 3.4-64 

3.4.38 PRETRS (Utility for Modules Which Use the CSTM Data Block - 

Single Precision Version) 3.4-66 

3.4.39 PRETAB (Table Look-Up) 3.4-67 

3.4.40 AXIS (Draw an Axis on a Plot) 3.4-70 

3.4.41 AXISi (Axis Routine for Plotter 1) 3.4-72 

3.4.42 SKPFRM (Skip a Variable Nimiber of Frames) 3.4-73 

3.4.43 SELCAM (To Initiate a New Plot) 3.4-74 

3.4.44 IDPLUT (Generate an "ID" Plot) 3.4-75 

3.4.45 INTGPX (Search a List of Integers) 3.4-76 

3.4.46 INTLST (Interpret a List of Integers) 3.4-77 

3.4.47 LINE (Draw a Line on a Plotter) 3.4-78 

3.4.48 LINE1 (Draw a Line on Plotter 1) 3.4-79 

3.4.49 PRINT (Print a Title on a Plotter) 3.4-81 

3.4.50 RDM0DX (Read a File Containing XRCARD Translations) 3.4-83 

3.4.51 SGIN0 (GINU for Unformatted Tapes) 3.4-85 

3.4.52 STPL0T (To Initiate a New Plot or Terminate the Current Plot) 3.4-87 

3.4.53 SYMBOL (Type a Symbol on a Plotter) 3.4-88 

3.4.54 TIPE (Type a Line of Characters on a Plotter) 3.4-90 

3.4.55 TYPEi (Type a Line of Characters on Plotter i) ,. 3.4-92 

3.4.56 TYPFLT (Type a Floating Point Number 't)n a Plotter) 3.4-94 

3.4.57 TYPINT (Type an Integer Number on a Plotter) 3.4-96 

3.4.58 WPLTl (Write a Plotter Command for Plotter 1) 3.4-98 

3.4.59 WPLT2 (Write a Plotter Command for Plotters 2 and 8) 3.4-100 

3.4.60 WPLT3 (Write a Plotter Command for Plotter 3) 3.4-102 

3.4.61 GIN0I0 (GINU Input/Output Routine) 3.4-103 

3.4.62 EJECT (Automatic Page Eject) 3.4-105 

3.4.63 PLAMAT (Material Property Utility for Two-Dimensional Elements 

in Piecewise Linear Analysis) 3.4-106 



xiv (3/1/70) 



TABLE OF CONTENTS (Continued) 

Section Page No. 

3.4.64 WPLT4 (Write a Plotter Command for Plotters 4 through 7) 3.4-108 

3.4.65 WPLT9 (Write a Plotter Command for Plotter 9) 3.4-110 

3.4.66 WPLTIO (Write a Plotter Command for the NASTRAN General Purpose 

P'.otter) 3.4-ni 

3.4.67 PLTSET (Plotting Parameter Initialization) 3.4-113 

3.4.68 DRWCHR (To Draw a Line of Characters) 3.4-115 

3.4.69 FNDPLT (Determine the Internal Plotter and Model Indices) 3.4-117 

3.5 MATRIX SUBROUTINE DESCRIPTIONS 3.5-1 

3.5.1 BLDPK (Build a Packed Column of a Matrix) 3.5-1 

3.5.2 PACK (Pack a Column of a Matrix) 3.5-5 

3.5.3 INTPK (Interpret a Packed Column of a Matrix) 3.5-7 

3.5.4 UNPACK (Unpack a Packed Column of a Matrix) 3.5-10 

3.5.5 CALCV (Compute a Partitioning Vector) 3.5-12 

3.5.6 PARTN - MERGE (Partition a Matrix - Merge Matrices Together) 3.5-13 

3.5.7 SSG2A (Driver for PARTN) 3.5-16 

3.5.8 SDRIB (Driver for MERGE) 3.5-17 

3.5.9 UPART (Symmetric Partition Driver) 3.5-18 

3.5.10 ADD (Matrix Addition Routine) 3.5-19 

3.5.11 SSG2C (Driver for ADD) 3.5-20 

3.5.12 MPYAD (Matrix Multiplication Routine) 3.5-22 

3.5.13 SSG2B (Driver for MPYAD) 3.5-29 

3.5.14 SDCUMP (Symmetric Decomposition) 3.5-30 

3.5.15 DECjJMP (Unsymmetric Matrix Decomposition) 3.5-44 

3.5.16 CDCUMP (Complex Matrix Decomposition) 3.5-62 

3.5.17 FBS (Forward - Backward Substitution) 3.5-64 

3.5.18 SSG3A (Driver for FBS) 3.5-66 

3.5.19 GFBS (General Forward - Backward Substitution) 3.5-67 

3.5.20 S0LVER (Simultaneous Equation Solution Routine) 3.5-69 

3.5.21 DMPY (Multiply a Diagonal Matrix by an Arbitrary Matrix) 3.5-71 

3.5.22 ELIM (Perform a Matrix Reduction) 3.5-73 

3.5.23 FACTOR (Decompose a Matrix Into Triangular Factors) 3.5-74 

XV (3/1/70) 



TABLE OF CONTENTS (Continued) 

r ^- Page No. 

Se ction — = 

3.5.24 TRANPl (Driver for TRNSP) 3.5-75 

3.5.25 TRNSP (Matrix Transpose) 3.5-76 

4. MODULE FUNCTIONAL DESCRIPTIONS 

4.1 GENERAL COMMENTS AND INDEXES 4.1-1 

4.1.1 Use of Module Functional Descriptions 4.1-2 

4.1.2 Alphabetical Index of Module Functional Descriptions 4.1-7 

4.1.3 Alphabetical Index of Entry Points in Module Functional 

Descriptions 4.1-8 

4.2 EXECUTIVE PREFACE MODULE XCSA (EXECUTIVE CONTROL SECTION ANALYSIS) 4.2-1 

4.3 EXECUTIVE PREFACE MODULE IFPl (INPUT FILE PROCESSOR, PART 1) 4.3-1 

4.4 EXECUTIVE PREFACE MODULE XS0RT (EXECUTIVE BULK DATA CARD SORT) 4.4-1 

4.5 EXECUTIVE PREFACE MODULE IFP (INPUT FILE PROCESSOR) 4.5-1 

4.6 EXECUTIVE PREFACE MODULE IFP3 (INPUT FILE PROCESSOR 3) 4.6-1 

4.7 EXECUTIVE PREFACE MODULE XGPI (EXECUTIVE GENERAL PROBLEM INITIALIZATION).... 4.7-1 

4.8 EXECUTIVE PREFACE MODULE UMFEDIT (USER MASTER FILE EDITOR) 4.8-1 

4.9 EXECUTIVE MODULE XSFA (EXECUTIVE SEGMENT FILE ALLOCATOR) 4.9-1 

4.10 EXECUTIVE DMAP MODULE CHKPNT (CHECKPOINT) 4.10-1 

4.11 EXECUTIVE DMAP INSTRUCTION REPT (REPEAT A GROUP OF DMAP INSTRUCTIONS) 4.11-1 

4.12 EXECUTIVE DMAP INSTRUCTION JUMP (UNCONDITIONAL DMAP TRANSFER) 4.12-1 

4.13 EXECUTIVE DMAP INSTRUCTION CfiiND (CONDITIONAL TRANSFER) 4.13-1 

4.14 EXECUTIVE DMAP INSTRUCTION EXIT (TERMINATE DMAP PROGRAM) 4.14-1 

4.15 EXECUTIVE DMAP MODULE SAVE (SAVE VARIABLE PARAMETER VALUES) 4.15-1 

4.16 EXECUTIVE DMAP MODULE PURGE (EXPLICIT DATA BLOCK PURGE) 4.16-1 

4.17 EXECUTIVE DMAP MODULE EQUIV (DATA BLOCK NAME EQUIVALENCE) 4.17-1 

4.18 EXECUTIVE DMAP INSTRUCTION END (END OF DMAP PROGRAM) 4.18-1 

4.19 EXECUTIVE DMAP MODULE PARAM (PARAMETER PROCESSOR) 4.19-1 

4.20 EXECUTIVE DMAP MODULE SETVAL (SET VALUES) 4.20-1 

4.21 FUNCTIONAL MODULE GPl (GEOMETRY PROCESSOR - PHASE 1) 4.21-1 

4.22 FUNCTIONAL MODULE GP2 (GEOMETRY PROCESSOR - PHASE 2) 4.22-1 

4.23 FUNCTIONAL MODULE PLTSET (PLOT SET DEFINITION PROCESSOR) 4.23-1 

4.24 FUNCTIONAL MODULE PL(3T (STRUCTURAL PLOTTER) 4.24-1 

xvi (3/1/70) 



TABLE OF CONTENTS (Continued) 

Section Page No. 

4.25 FUNCTIONAL MODULE GP3 (GEOMETRY PROCESSOR - PHASE 3) 4.25-1 

4.26 FUNCTIONAL MODULE TAl (TABLE ASSEMBLER) 4.26-1 

4.27 FUNCTIONAL MODULE SMAl (STRUCTURAL MATRIX ASSEMBLER - PHASE 1) 4.27-1 

4.28 FUNCTIONAL MODULE SMA2 (STRUCTURAL MATRIX ASSEMBLER - PHASE 2) 4.28-1 

4.29 FUNCTIONAL MODULE GPWG (GRID POINT WEIGHT GENERATOR) 4.29-1 

4.30 FUNCTIONAL MODULE SMA3 (STRUCTURAL MATRIX ASSEMBLER - PHASE 3) 4.30-1 

4.31 FUNCTIONAL MODULE GP4 (GEOMETRY PROCESSOR - PHASE 4) 4.31-1 

4.32 FUNCTIONAL MODULE GPSP (GRID POINT SINGULARITY PROCESSOR) 4.32-1 

4.33 FUNCTIONAL MODULE MCEl (MULTIPOINT CONSTRAINT ELIMINATOR - PHASE 1) 4.33-1 

4.34 FUNCTIONAL MODULE MCE2 (MULTIPOINT CONSTRAINT ELIMINATOR - PHASE 2) 4.34-1 

4.35 FUNCTIONAL MODULE SCEl (SINGLE-POINT CONSTRAINT ELIMINATOR) 4.35-1 

4.36 FUNCTIONAL MODULE SMPl (STRUCTURAL MATRIX PARTITIONER - PHASE 1) 4.36-1 

4.37 FUNCTIONAL MODULE RBMGl (RIGID BODY MATRIX GENERATOR - PHASE 1) 4.37-1 

4.38 FUNCTIONAL MODULE RBMG2 (RIGID BODY MATRIX GENERATOR - PHASE 2) 4.38-1 

4.39 FUNCTIONAL MODULE RBMG3 (RIGID BODY MATRIX GENERATOR - PHASE 3) 4.39-1 

4.40 FUNCTIONAL MODULE RBMG4 (RIGID BODY MATRIX GENERATOR - PHASE 4) 4.40-1 

4.41 FUNCTIONAL MODULE SSGl (STATIC SOLUTION GENERATOR - PHASE 1) 4.41-1 

4.42 FUNCTIONAL MODULE SSG2 (STATIC SOLUTION GENERATOR - PHASE 2) 4.42-1 

4.43 FUNCTIONAL MODULE SSG3 (STATIC SOLUTION GENERATOR - PHASE 3) 4.43-1 

4.44 FUNCTIONAL MODULE SSG4 (STATIC SOLUTION GENERATOR - PHASE 4) 4.44-1 

4.45 FUNCTIONAL MODULE SDRl (STRESS DATA RECOVERY - PHASE 1) 4.45-1 

4.46 FUNCTIONAL MODULE SDR2 (STRESS DATA RECOVERY - PHASE 2) 4.46-1 

4.47 FUNCTIONAL MODULE DPD (DYNAMICS POOL DISTRIBUTOR) 4.47-1 

4.48 FUNCTIONAL MODULE READ (REAL EIGENVALUE ANALYSIS - DISPLACEMENT) 4.48-1 

4.49 FUNCTIONAL MODULE DSMGl (DIFFERENTIAL STIFFNESS MATRIX GENERATOR - PHASE 1). 4.49-1 

4.50 FUNCTIONAL MODULE SMP2 (STRUCTURAL MATRIX PARTITIONER - PHASE 2) 4.50-1 

4.51 FUNCTIONAL MODULE DSMG2 (DIFFERENTIAL STIFFNESS MATRIX GENERATOR - PHASE 2). 4.51-1 

4.52 FUNCTIONAL MODULE PLAl (PIECEWISE LINEAR ANALYSIS - PHASE 1) 4.52-1 

4.53 FUNCTIONAL MODULE PLA2 (PIECEWISE LINEAR ANALYSIS - PHASE 2) 4.53-1 

4.54 FUNCTIONAL MODULE PLA3 (PIECEWISE LINEAR ANALYSIS - PHASE 3) 4.54-1 



xvii (3/1/70) 



TABLE OF CONTENTS (Continued) 

Section ^^aejo: 

4.55 FUNCTIONAL MODULE PLA4 (PIECEWISE LINEAR ANALYSIS - PHASE 4) 4,55-1 

4.56 FUNCTIONAL MODULE CASE (SIMPLIFY CASE CONTROL) 4.56-1 

4.57 FUNCTIONAL MODULE MTRXIN (MATRIX INPUT) 4.57-1 

4.58 FUNCTIONAL MODULE GKAD (GENERAL K ASSEMBLER DIRECT) 4.58-1 

4.59 FUNCTIONAL MODULE CEAD (COMPLEX EIGENVALUE ANALYSIS - DISPLACEMENT) 4.59-1 

4.60 FUNCTIONAL MODULE VDR (VECTOR DATA RECOVERY) 4.60-1 

4.61 FUNCTIONAL MODULE FRRD (FREQUENCY RESPONSE - DISPLACEMENT APPROACH) 4.61-1 

4.62 FUNCTIONAL MODULE SDR3 (STRESS DATA RECOVERY - PHASE 3 - S0RT1 to S(3RT2 

PROCESSOR) ^^-62-1 

4.63 FUNCTIONAL MODULE XYTRAN (XY - OUTPUT DATA TRANSLATOR) 4.63-1 

4.64 FUNCTIONAL MODULE RAND0M (RANDOM ANALYSIS MODULE) 4.64-1 

4.65 FUNCTIONAL MODULE TRD (TRANSIENT ANALYSIS - DISPLACEMENT) 4.65-1 

4.66 FUNCTIONAL MODULE GKAM (GENERAL K ASSEMBLER MODAL) 4.66-1 

4.67 FUNCTIONAL MODULE DDRl (DYNAMIC DATA RECOVERY - PART 1) 4.67-1 

4.68 FUNCTIONAL MODULE DDR2 (DYNAMIC DATA RECOVERY - PART 2) 4.68-1 

4.69 OUTPUT MODULE XYPL0T (X-Y DATA PLOTTER) 4.69-1 

4.70 OUTPUT MODULE 0FP (OUTPUT FILE PROCESSOR) 4.70-1 

4.71 OUTPUT MODULE MATPRN (GENERAL MATRIX PRINTER) 4.71-1 

4.72 OUTPUT MODULE MATGPR (DISPLACEMENT METHOD MATRIX PRINTER) 4.72-1 

4.73 OUTPUT MODULE MATPRT (MATRIX PRINTER) 4.73-1 

4.74 OUTPUT MODULE SEEMAT (PICTORIAL MATRIX PRINTER) 4.74-1 

4.75 OUTPUT MODULE TABPT (TABLE PRINTER) 4.75-1 

4.76 OUTPUT MODULE PRTMSG (MESSAGE WRITER) 4.76-1 

4.77 OUTPUT MODULE PRTPARM (PARAMETER AND DMAP MESSAGE PRINTER) 4.77-1 

4.78 MATRIX MODULE ADD (ADD TWO MATRICES) 4.78-1 

4.79 MATRIX MODULE MPYAD (MULTIPLY ADD) 4.79-1 

4.80 MATRIX MODULE S(3LVE (SOLVES THE MATRIX EQUATION [A][X] = [B]) 4.80-1 

4.81 MATRIX MODULE DEC0MP (MATRIX DECOMPOSITION) 4.81-1 

4.82 MATRIX MODULE FBS (FORWARD - BACKWARD SUBSTITUTION) 4.82-1 

4.83 MATRIX MODULE PARTN (PARTITION A MATRIX) 4.83-1 

4.84 MATRIX MODULE MERGE (MERGE MATRICES TOGETHER) 4.84-1 



xviii (3/1/70) 



lABLL 01- CONTENTS (Continued) 

Section Page No. 

4.85 MATRIX MODULE TRNSP (TRANSPOSE A MATRIX) 4.85-1 

4.86 MATRIX MODULE SMPYAD (STRING MULTIPLY ADD) 4.86-1 

4.87 STRUCTURAL ELEMENT DESCRIPTIONS 4.87-1 

4.87.1 The RjlD, C0NR0D, and TUBE Elements 4.87-7 

4.87.1.1 Input Data for the R0D, TUBE, C0NR0D Elements 4.87-7 

4.87.1.? Stiffness Matrix Calculation (Subroutines KR0D and 

KTUBE of Module SMAl) 4.87-8 

4.87.1.3 Lumped Mass Matrix Calculation (Subroutines MR0D and MTUBE 

of Module SMA2) 4.87-9 

4.87.1.4 Element Load Calculations (Subroutine EDTL of Module 

SSGl ) 4.87-10 

4.87.1.5 Element Stress Calculations (Subroutines SR0D1 and 

SR0D2 of Module SDR2) 4.87-10 

4.87.1.6 Differential Stiffness Matrix Calculation (Subroutine 

DR0D of Module DSMGl) 4.87-12 

4.87.1.7 Piecewise Linear Analysis Calculations (Subroutine 
PSR0D of Module PLA3 and Subroutine PKR0D of Module 

PLA4) 4.87-14 

4.87.1.8 Coupled Mass Matrix Calculation (Subroutine MCR0D of 

Module SMA2) 4.87-16a 

4.87.2 The BAR Element 4.87-17 

4.87.2.1 Input Data for the BAR Element 4.87-17 

4.87.2.2 Stiffness Matrix Calculation (Subroutine KBAR of 

Module SMAl) 4.87-18 

4.87.2.3 Lumped Mass Matrix Calculation (Subroutine MBAR of 

Modul e SMA2) 4 . 87-25 

4.87.2.4 Element Load Calculation (Subroutine BAR of Module 

SSGl ) 4.87-26 

4.87.2.5 Element Stress Calculations (Subroutines SBARl and 

SBAR2 of Module SDR2) 4.87-27 

4.87.2.6 Differential Stiffness Matrix Calculation (Subroutine 

DBEAM of Module DSMGl) 4.87-29 

4.87.2.7 Piecewise Linear Analysis Calculatioiis (Subroutine 
PSBAR of Module PLA3 and Subroutine PKBAR of Module 

PLA4) 4.87-32 

4.87.2.8 "Consistent" Mass Matrix Calculation (Subroutine 

MCBAR of Module SMA2) 4.87-36 



4.87.3 The SHEAR Panel and TWIST Panel Elements 4, 



xix (3/1/70) 



87-38 



TABLE OF CONTENTS (Continued) 

Section P^ailS^ 

4.87.3.1 Input Data for SHEAR and TWIST Panels 4.87-38 

4.87.3.2 Definition of Element Geometry 4.87-39 

4.87.3.3 Coefficient Generation 4.87-41 

4.87.3.4 Stiffness Matrix Formulation For a SHEAR Panel 

(Subroutine KPANEL of Module SMAl) 4.87-46 

4 87 3.5 TWIST Element Stiffness Matrix Generation (Subroutine 

KPANEL of Module SMAl ) 4.87-47 

4 87.3.6 Mass Matrix Generation (Subroutine MASSTQ of Module 

SMA2) 4.87-48 

4.87.3.7 SHEAR Element Stress and Force Calculations 

(Subroutine SPANLl and SPANL2 of Module SDR2) 4.87-50 

4.87.3.8 TWIST Element Stress and Force Calculations 

(Subroutines SPANLl and SPANL2 of Module SDR2) 4.87-52 

4.87.3.9 SHEAR Panel Differential Stiffness Calculations 

(Subroutine DSHEAR of Module DSGMl) 4.87-54 

4.87.4 TRMEM and QDMEM Elements 4.87-58 

4.87.4.1 Input Data for the TRMEM and QDMEM Elements 4.87-58 

4.87.4.2 Basic Equations for TRMEM 4.87-59 

4.87.4.3 Stiffness Matrix Calculation for TRMEM (Subroutine 

KTRMEM of Module SMAl) 4.87-61 

4.87.4.4 Mass Matrix Calculation for the TRMEM Element 

(Subroutine MASSTQ of Module SMA2) 4.87-62 

4.87.4.5 Element Load Calculations for the TRMEM Element 

(Subroutine TRIMEM of Module SSGl) 4.87-63 

4.87.4.6 Element Stress Calculations for the TRMEM Element 
(Subroutines STRMEl and STQME2 of Module SDR2) 4.87-63 

4.87.4.7 Differential Stiffness Matrix Calculations for the 

TRMEM Element (Subroutine DTRMEM of Module DSMGl) 4.87-67 

4.87.4.8 General Calculations for the QDMEM by the QDMEM 
Driver Routines (Subroutines KQDMEM of Module SMAl, 

SQDMEl of Module SDR2, DQDMEM of Module DSMGl) 4.87-67 

4.87.4.9 Stiffness Matrix Calculations for the QDMEM 4.87-70 

4 87.4.10 Element Stress Calculations for the QDMEM (Subroutine 

SQDMEl and STQME2 of Module SDR2) 4.87-70 

4 87 4.11 Mass Matrix Generation for the QDMEM Element (Subroutine 

MASSTQ of Module SMA2) 4.87-74 

4.87.4.12 Thermal Load Computation for the QDMEM 4.87-76 

4.87.4.13 Differential Stiffness Computations for the QDMEM 
(Subroutines DQDMEM and DTRMEM of Module DSGMl) 4.87-76 



XX (3/1/70) 



Section 



TABLE OF CONTENTS (Continued) 

Page No . 

4.87.4.14 Piecewise Linear Analysis Calculations (Subroutines 
PSTRM and PSQDM of Module PLA3 and Subroutines PKTRM 
PKTRM and PKQDM of Module PLA4) 4.87-76a 

4.87.5 The TRBSC, TRPLT and QDPLT Elements 4.87-78 

4.87.5.1 Input Data for the TRBSC and TRPLT Elements 4.87-78 

4.87.5.2 General Calculation for the TRBSC Element 4.87-79 

4.87.5.3 Stiffness Matrix Calculations for the TRBSC Element 
(Subroutine KTRBSC of Module SMAl) 4.87-84 

4.87.5.4 Stress Calculations for the TRBSC Element 4.87-85 

4.87.5.5 Stiffness Matrix Calculations for the TRPLT Element 
(Subroutine KTRPLT of Module SMAl) 4.87-87 

4.87.5.6 Structural Damping Matrices for the TRPLT Element 4.87-95 

4.87.5.7 Stress and Element Force Calculations for the TRPLT 

Element (Subroutines STRPLl and SBSPL2 of Module SDR2)... 4.87-95 

4.87.5.8 Stiffness Matrix Calculations for the QDPLT Element 
(Subroutine KQDPLT of Module SMAl) 4.87-97 

4.87.5.9 Stress and Element Force Calculations for the QDPLT 

Element (Subroutines SQDPLl and SBSPL2 of Module SDR2)... 4.87-102 

4.87.5.10 Lumped Mass Matrix Generation for the TRBSC, TRPLT, and 

QDPLT Elements (Subroutine MASSTQ of Module SMA2) 4.87-104 

4.87.5.11 Coupled Mass Matrix Calculations for the TRBSC Element 
(Subroutine MTRBSC of Module SMA2) 4.87-104a 

4.87.6 The TRIAl , TRIA2, QUADl and QUAD2 Elements 4.87-106 

4.87.6.1 Input Data for the TRIAl, TRIA2, QUADl and qUAD2 4.87-106 

4.87.6.2 Stiffness Matrix Calculations (Subroutine KTRIQD of 

Module SMAl ) 4.87-107 

4.87.6.3 Lumped Mass Matrix Generation (Subroutine MASSTO of 

Module SMA2) ^ 4_87.io8 

4.87.6.4 Thermal Load Calculations (Subroutine EDTL of Module 

^^'^'^' 4. 87-1 08 

4.87.6.5 Element Stress and Force Calculations (Subroutines 

STRQDl and STRQD2 of Module SDR2) 4.87-108 

4.87.6.6 Differential Stiffness Matrix Calculations 4.87-109 

4.87.6.7 Coupled Mass Matrix Calculations (Subroutine MTRIQD 

of Module SMA2) ; 4.87-109 

4.87.6.8 Piecewise Linear Analysis Calculations (Subroutines 
PSTRIl, PSTRI2. PSQADl, and PSQAD2 of Module PLA3 and 

PKTRIl, PKTRI2, PKQADl and PKQAD2 of Module PLA4) 4 8''-109a 



xxi (3/1/70) 



Section 



TABLE OF CONTENTS (Continued) 

Page No. 

4.87.7 The ELASi , MASSi and DAMPi Elements 4.87-110 

4.87.7.1 Input Data for the ELASi, MASSi and DAMPi Elements 4.87-110 

4 87 7.2 ELASi Stiffness Matrix Generation (Subroutine KELAS 

of Module SMAl) 4.87-110 

4 87 7.3 MASSi Mass Matrix Generation (Subroutine MASSD of 

Module SMA2) '*•"'■ ' ' ' 

4 87 7.4 DAMPi Damping Matrix Generation (Subroutine MASSD of . ^-i ^^^ 

Module SMA2) '^•^'- ' ' ' 

4 87 7 5 ELASi Stress and Force Recovery (Subroutines SELASl and 

SELAS2 of Module SDR2) 4.87-11 1 

4.87.8 Concentrated Mass Elements C0NM1 , C0NM2 4.87-113 

4.87.8.1 ECPT Entries for the C0NM1 Mass Element 4.87-113 

4 87.8.2 Mass Matrix Calculations for the C0NM1 Element 

(Subroutine MC0NMX of Module SMA2) 4.87-113 

4.87.8.3 ECPT Entries for the C0NM2 Mass Element 4.87-114 

4 87 8.4 Mass Matrix Calculations for the C0NM2 Element 

(Subroutine MC0NMX of Module SMA2) 4.87-114 

4.87.9 The C0NEAX Element 4.87-117 

4.87.9.1 Input Data for the C0NEAX Element 4.87-117 

4 87 9 2 Stiffness Matrix Calculations (Subroutine KC0NE of „ o-, m 

Module SMAl) 4.87-11/ 



4 87 9 3 Mass Matrix Computation (Subroutine MC0NE of Module 
smz) 

4.87.9.4 Element Load Calculations (Subroutine C0NE of Module 



SSGl) '^•S^-nS 

4 87 9.5 Element Stress Calculations (Subroutines SC0NE1, SC0NE2, 

SC0NE3 of Module SDR2) 4.87-123 

4 87 9 6 Differential Stiffness Matrix Calculations (Subroutine 

DC0NE of Module DSMGl) 4.87-127a 

4.87.10 The TRIARG Element 4.87-128 

4.87.10.1 Input Data for the TRIARG Element 4.87-128 

4.87.10.2 General Geometric Calculations 4.87-129 

4.87.10.3 Integral Calculations 4.87-130 

4.87.10.4 Elastic Constants Matrix Calculations 4.87-132 

4 87 10.5 Stiffness Matrix Generation (Subroutine KTRIRG of 

Module SMAl) 4.87-133 



xxii (3/1/70) 



TABLE OF CONTEMTS (Continued) 

Section Page No. 

4.87.10.6 Mass Matrix Calculations (Subroutine MTRIRG of 

Module SMA2) 4.87-135 

4.87.10.7 Thermal Load Calculations (Subroutine TTRIRG of 

Module SSGl ) 4.87-136 

4.87.10.8 Element Force and Stress Calculations (Subroutines 

STRIRl and STRIR2 of Module SDR2) 4.87-136 

4.87.11 The TRAPRG Element 4.87-139 

4.87.11.1 Input Data for the TRAPRG Element 4.87-139 

4.87.11.2 General Calculations 4.87-140 

4.87.11.3 Integral Calculations 4.87-142 

4.87.11.4 Elastic Constants Matrix Calculation 4.87-144 

4.87.11.5 Stiffness Matrix Generation (Subroutine KTRAPR of 

Module SMAl) 4.87-144 

4.87.11.6 Mass Matrix Calculation (Subroutine MTRAPR of Module 

Sf-^A2) 4.87-146 

4.87.11.7 Thermal Load Calculations (Subroutine TTRAPR of Module 

SSGl ) 4.87-147 

4.87.11.8 Element Force and Stress Calculations (Subroutines 

STRAPl and STRAP2 of Module SDR2) 4.87-148 

4.87.12 The T0RDRG Element 4.87-152 

4.87.12.1 Input Data for the T0RDRG Element 4.87-152 

4.87.12.2 General Calculations 4.87-153 

4.87.12.3 Integral Calculations 4.87-156 

4.87.12.4 Elastic Constants Matrix Calculations 4.87-160 

4.87.12.5 Stiffness Matrix Calculations (Subroutine KT0RDR of 

Module SMAl ) 4.87-160 

4.87.12.6 Mass Matrix Calculations (Subroutine MT0RDR of Module 

SMA2) 4.87-165 

4.87.12.7 Thermal Load Calculations (Subroutine TTjIRDR of Module 

SSGl ) 4.87-166 

4.87.12.8 Element Force and Stress Calculations (Subroutines 

ST0RD1 and ST0RD2 of Module SDR2) 4.87-168 

4.87.13 The VISC Element 4.87-175 

4.87.13.1 Input Data for the VISC Element 4.87-175 

4.87.13.2 Damping Matrix Calculations (Subroutine BVISC of 

Module SMA2) 4.87-175 



xxiii (3/1/70) 



TABLE OF CONTEMTS (Continued) 

_ ^. Page No. 

Section — '^ 

4.87.14 Integral Calculations for the TRIAR6, TRAPRG Elements 4.87-177 

4.87.14.1 Integral Calculation for q > and any p. (Function 



DKINT), 



4.87-179 



4 87 14.2 Integral Calculation for p > and q < - 1 (Function 

DK89) 4.87-179 

4 87.14.3 Integral Calculation for p < and q < - 1 (Function 

DKIOO) 4.87-180 

4 87.14.4 Integral Calculations for p > - 1 and q = -1 (Function 

DKJAB) 4.87-181 

4 87.14.5 Integral Calculations for p > - 1 and q = -1 (Function 

DK219) 4.87-182 

4.87.14.6 Integral Calculations for p = -1 and q = -1 (Function 

DK211) 4.87-182 

4.88 DETERMINANT METHOD OF EIGENVALUE EXTRACTION 4.88-1 

5. NASTRAN - OPERATING SYSTEM INTERFACES 

5.1 INTRODUCTION ^-^"^ 

5.2 NASTRAN ON THE IBM 7094/7040(44) DCS (IBSYS) 5.2-1 

5.2.1 Introducti on 5.2-1 

5.2.2 Input/Output ^•2"'' 

5.2.3 Link Switching ^-2-3 

5.2.4 Overlay Considerations and Implementation of Open Core 5.2-3 

5.2.5 Execution Deck Setup 5.2-5 

5.2.6 Generation of the NASTRAN Executable System ("Subsysing") 5.2-8 

5.2.7 Machine Dependent Routines 5.2-10 

5.2.8 Flow Charts for the DCS Machine Language GIN0 Routines 5.2-11 

5.2.9 DCS Overlay Diagrams 5.2-30 

5.3 NASTRAN ON THE IBM SYSTEM/360 OPERATING SYSTEM (0S) 5.3-1 

5.3.1 Introduction 5.3-1 

5.3.2 Input/Output 5.3-2 

5.3.3 Link Switching 5.3-2 

5.3.4 Overlay Considerations and Open Core Implementation 5.3-3 

5.3.5 Executi on Deck Setup 5.3-4 

5.3.6 Generation of the NASTRAN Executable System (SUBSYSING) 5.3-9 



xxiv (3/1/70) 



TABLE OF CONTENTS (Continued) 

Section Page No. 

5.3.7 Machine Dependent Routines 5.3-10 

5.3.8 Special Error Codes from NASTRAN on the System/360 5.3-11 

5.4 NASTRAK ON THE UNIVAC 1108 (EXEC 8) 5.4-1 

5.4.1 Introduction 5.4-1 

5.4.2 Inpu t/Ou tpu t 5 . 4_ 1 

5.4.3 Link Switching 5.4-2 

5.4.4 Overlay Considerations and Implementation of Open Core 5.4-3 

5.4.5 Execution Deck Setup 5.4-5 

5.4.6 Generation of the NASTRAN Executable System (Subsysing) 5.4-7 

5.4.7 Machine Dependent Routines 5.4-8 

5.5 NASTRAN ON THE CDC 6400/6600 (SCOPE 3) 5.5-1 

5.5.1 Introduction 5.5-1 

5.5.2 Input/Output 5.5-1 

5.5.3 Layout of Core Storage 5.5-4 

5.5.4 Execution Deck Setup 5.5-6 

5.5.5 Generation of the NASTRAN Executable System 5.5-9 

5.5.6 Machine Dependent Routines 5.5-10 

5.6 THE CDC 5400/6600 LINKAGE EDITOR 5.6-1 

5.6.1 Introduction 5.6-1 

5.6.2 Preparing for Linkage Editor Processing 5.6-6 

5.6.3 Designing an Overlay Program 5.6-7 

5.6.4 Linkage Editor Control Statements 5.6-12 

5.6.5 Examples of Linkage Editor Processing 5.6-23 

5.6.6 Storage Requirements for the Linkage Editor 5.6-29 

6. MODIFICATIONS AND ADDITIONS TO NASTRAN 

6 . 1 INTRODUCTION 6 j . 1 

6.2 F0RTRAN IV LANGUAGE RESTRICTIONS 6.2-1 

6.3 THE EXECUTIVE CONTROL DECK 6.3-1 

6.3.1 The KASTRAN Card 6.3-1 

6.4 THE CASE CONTROL DECK 6.4-1 



XXV (3/1/70) 



TABLE OF CONTENTS (Continued) 

Section Paae_No^ 

6.5 THE BULK DATA DECK 6.5-1 

6.6 RIGID FORMATS ^-^-l 

6.7 FUNCTIONAL MODULES 6-7-1 

6.8 STRUCTURAL ELEMENTS 6.8-1 

6.8.1 IFP (Input File Processor) 6.8-1 

6.8.2 GPl, GP2, 6P3, and TAl (Geometry Processor and Table Assembler 

Modules) 6.8-1 

6.8.3 PLTSET (Plot Set Definition Processor) 6.8-2 

6.8.4 SMAl (Structural Matrix Assembler - Phase 1) 6.8-3 

6.8.5 SMA2 (Structural Matrix Assembler - Phase 2) 6.8-3 

6.8.6 SS61 (Static So'iution Generator - Phase 1) 6.8-3 

6.8.7 SDR2 (Stress Data Recovery - Phase 2) 6.8-3 

6.8.8 DSMGl (Differential Stiffness Matrix Generator - Phase 1) 6.8-4 

6.8.9 PLAl (Piecewise Linear Analysis - Phase 1) 6.8-5 

6.8.10 PLA3 (Piecewise Linear Analysis - Phase 3) 6.8-6 

6.8.11 PLA4 (Piecewise Linear Analysis - Phase 4) 6.8-6 

6.8.12 (JFP (Output File Processor) 6.8-7 

6.9 PRINTED OUTPUT 6.9-1 

6.10 PLOHER OUTPUT 6.10-1 

6.10.1 Changes to the Plotter Software 6.10-1 

6.10.2 Changes to the FLJIT Module, the Structural Plotter 6.10-3 

6.10.3 Changes to the XYPLBIT Module, the XY Plotter 6.10-4 

6.10.4 Changes to the SEEMAT Module, the Matrix Plotter 6.10-4 

6.10.5 Use of the NASTRAN Plotter Software in a New Module 6.10-6 

6.10.6 NASTRAN General Purpose Plotter 6.10-14 

6.11 ADDITION OF A NEW LINK 6.11-1 

6.11.1 Modules to Include 6.11-1 

6.11.2 Addition of New Modules 6.11-1 

6.11.3 Generation of a New Link Specification Table and a New Link 

Driver 6.11-2 

6.11.4 Subsys the New Link 6.11-4 

6.11.5 Increasing the Link Limit 6.11-4 

xxvi (3/1/70) 



PROGRAM OVERVIEW 

1.1 PROGRAM OVERVIEW 

1.1.1 Objectives 

The NASTRAN program has been designed according to two classes of criteria. The first class 
relates to functional requirements for the solution of an extremely wide range of large and com- 
plex problems in structural analysis with high accuracy and computational efficiency. These cri- 
teria are achieved by developing and incorporating the most advanced mathematical models and com- 
putational algorithms that have been proven in practice. In particular, they are achieved by 
providing such features as the bandwidth-with-active-column technique in matrix decomposition; 
packing routines to take maximum advantage of matrix sparsity so as to conserve input/output time; 
highly stable and efficient algorithms for the solution of problems in eigenvalue analysis and 
transient response; and an elegant approach to modeling the effects of control systems and other 
nonstructural components. 

The second class of criteria relates to the operational and organizational aspects of the 

program. These aspects are somewhat divorced from structural analysis itself; yet they are of 

equal importance in determining the usefulness and quality of the program. Chief among these 
criteria are: 

1. Simplicity of problem input deck preparation. 

2. Minimization of chances for human error in problem preparation. 

3. Minimization of need for manual intervention during program execution. 

4. Ease of program modification and extension to new functional capability. 

5. Ease of program extension to new computer configurations and operating systems, and 
generality in ability to operate efficiently under a wide set of configuration capabilities. 

6. Capability for step by step problem solution, without penalty of repeated problem set up. 

7. Capability for problem restart following unplanned interruptions or problem preparation 
error. 

8. Minimization of system overhead, in the three vital areas: 

a. Diversion of core storage from functional use in problem solution. 



1.1-1 



NASTRAN PROGRAMMING FUNDAMENTALS 

b. Diversion of auxiliary storage units from functional to system usage. 

c. System housekeeping time for performing executive functions that do not directly 
further problem solution. 

These criteria are achieved in liASTRAN through modular separation of functional capabilities, 
organized under an efficient, problem-independent Executive System, 

This approach is absolutely essential for any complex multi -operation, multi-file application 
program such as NASTRAN. To see this, one must examine the implications of modularity in program 
organization. 

Any application computer program provides a selection of computational sequences. These are 
controlled by the user through externally provided options and parameter values. Since no user 
will wish to observe the result of each calculation, these options also provide for the selection 
of the data to be output. 

In addition to externally set options, internal switches whose setting depend upon tests 
performed during the calculations will control the computation sequences. There is, therefore, 
a natural separation of computations into functional blocks. The principal blocks are called 
functional modules; modules themselves of course may, and usually must, be further organized on a 
sub-modular basis. 

Despite this separation, however, it is clear that modules cannot be completely independent, 
since they are all directed toward solution of the same general problem. In particular, they 
must intercoirmunicate data among themselves. The principal problem in organizing any application 
program, large or small, is designing the data interfaces between nodules. 

For small programs, the standard techniques are to commuricate data via subroutine calling 
sequences and common data regions in core. For programs that handle larger amounts of data, 
auxiliary storage is used; however, strict specifications of the devices used and of the data 
record formats are usually imposed. 

The penalty paid is that of "side effects". A change in a minor subroutine initiates a 
modification of the data interfaces that propagates through the entire program. When the program 
is small, these effects may not be serious. For a complex program like NASTRAN, however, they 
would be disastrous. 



1.1-2 



PROGRAM OVERVIEW 

This problem has been solved in NASTRAN by a separation of system functions, performed by 
an Executive System, from problem solution functions, accomplished by modules separated strictly 
along functional lines. Each module is independent of all other modules in the sense that 
modification of a module, or addition of a new module, will not in general require modification 
of other modules. Even so, programming constraints on module development do exist but are minor. 
The essential restrictions are: 

1. Modules may Interface with other modules only through auxiliary storage files, as opposed 
to passing information between each other while in core. 

2. Since the availability and allocation of auxiliary files for module execution interact 
with the execution of other modules, no module can specify or allocate files for its input or 
output data. All auxiliary storage allocation is reserved as an Executive function. 

3. Modules operate as independent subprograms, and may not call, or be called by, other 
modules. They may be entered only from the Executive System. 

4. Modules may interface with the Executive System through a parameter table that is 
maintained by the Executive System. User-specified options and parameters are communicated 
to modules in this way. The major line of communication is one-way, from user to Executive 
routine to module. However, in addition, an appreciable two way communication, from module 
back to executive routine (and therefore to other modules) is permitted via the parameter table. 

5. Intra-module parameter communication is format-free in the sense that each module 
defines and orders its own local parameter set internally. Thus each module is 
independent of common data formatting by any other module. 

No other constraints, except those imposed by the resident compilers and operating systems, 
are required for functional modules. 

1,1.2 Program Organization 

Because of the very large size of the NASTRAN program (more than 750 decks and 300 individual 
overlay segments), execution as one physical program was not possible. However, to meet the 
stated design objectives, it was required that NASTRAN appear to the resident operating system as 
one program. 



1.1-3 



NASTRAN PROGRAMMING FUNDAMENTALS 

A program structure evolved which is basically computer independent, although the way in 
which the code structure is supported varies across the computers. 

The NASTRAN program is divided into a series of logical pieces called links. Each link con- 
tains its own root segment (the set of subprograms which is always core resident for that link) 
and its own complete overlay structure. Each link is capable of performing a predefined subset 
of NASTRAN operations. Communication between links occurs through computer files. Control of the 
sequence of execution of the links is performed entirely by the NASTRAN program and requires no 
operator intervention. As a result of this approach, a NASTRAN program execution appears to the 
resident operating system as a normal batch job to be processed in the batch stream. Detailed 
descriptions of the way in which the link structure is implemented on each computer are given 
in section 5. 



1.1-4 



NASTRAM EXECUTIVE SYSTEM 

1.2 NASTRAN EXECUTIVE SYSTEM 
1.2.1 Introduction 

The essential functions of the Executive System are: 

1. Establish and control the sequence of module executions according to options specified 
by the user. 

2. Establish, protect, and communicate values of parameters for each module. 

3. Allocate system files to all data blocks (a data block designates a set of data, matrix 
or table, occupying a file) generated during program execution. A file is "allocated" to a 
data block, and a data block is "assigned" to a file. The general data block I/j) routine 
(GIN0) and the data card conversion routines (XRCARD and RCARD) are considered Input/Output 
utilities and are discussed separately in section 1.6. 

4. Maintain a full restart capability for restoring a program execution after either a 
scheduled or unscheduled interruption. 

The Executive System is open-ended in the sense that it can accommodate an essentially 
unlimited number of functional modules, files, and parameters. Modification of the Executive 
System necessary for change, addition, or extension of functional modules is restricted to 
changes in entries in control tables stored within the Executive routines. 

Program execution is divided into two phases: 1) the Preface, in which modules XCSA, IFPl, 
XS0RT, IFP and XGPI are executed to: a) process the NASTRAN input data deck and b) perform 
general problem initialization; and 2) the program body itself, in which the sequence of program 
operations is controlled by the Operation Sequence Control Array (0SCAR) Executive table, which 
was developed in the XGPI module of the Preface. A diagram of a sample NASTRAN input data deck 
is shown in Figure 1. Note that a NASTRAN input data deck consists of 3 separate decks: 1) the 
Executive Control Deck, 2) the Case Control Deck and 3) the Bulk Data Deck. A detailed descrip- 
tion of the contents of the NASTRAN data deck is given in section 2 of the User's Manual. The 
flow of operations during the Preface is presented in Figure 2. The numbers in the blocks in 
Figure 2 refer to section numbers where more detailed explanations of the subroutines and modules 
can be found. 



1.2-1 



NASTRAN PROGKAMHING FUNDAMENTALS 




Figure 1. Sample NASTRAN input data deck. 



1.2-2 



NASTRAN EXECUTIVE SYSTEM 



(^ ENTER j 


^' 


Generate the Initial File Allocation 
Tables (GNFIAT-3.3.4) 



I 



Read and Analyze the Executive 
Control Deck (XCSA-4.2) 



Process the Case Control Deck 
(IFPl-4.3) 



Sort the Bulk Data Deck 
(XS0RT-4.4) 



Process the Bulk Data Deck 
(IFP-4.5 ) 




Further Process Data Specific to the 
Conical Shell Problem (IFP3-4.6) 



Perform General Problem 
Initialization (XGPI-4.7 ) 



Figure 2. Flow of operations during the Preface. 



1.2-3 



NASTRAN PROGRAMMING FUNDAMENTALS 

1.2.2 Executive Operations During the Preface 

The sequence of Preface operations shown in Figure 2 is controlled by the Sequence Monitor 
Initialization subroutine, SEMINT (see section 3.3.3). Each routine called by SEMINT is dis- 
cussed in the following sections. The numbers in the section headings refer to section numbers 
where more detailed information on the subroutine or module can be found. 

1.2.2.1 Generation of the Initial File Allocation Tables (GNFIAT section 3.3.4) 

Two file allocation tables are maintained by the NASTRAN Executive System. One table, FIAT, 
(see section 2.4) defines the files to which data blocks generated during solution of the problem 
win be allocated. The second table, XFIAT, (see section 2.4) includes files to which permanent 
Executive data blocks, such as the New Problem Tape, the Old Problem Tape, plot tapes, and the 
User's Master File are assigned. 

The New Problem Tape will contain those data blocks generated during the solution that are 
necessary for restarting the problem at any point. The Old Problem Tape contains the data blocks 
saved from some previous execution that may serve to bypass steps in the solution of the new 
problem. The User's Master File is a permanent collection of useful information, such as material 
properties, that may be used to generate input data. 

The generation of the XFIAT and FIAT tables is a computer dependent operation since direct 
Interface with the operating system of the computer must be made. The GNFIAT routine, which 
accomplishes this function, interrogates file tables In the nucleus of the operating system. 
Files which are available for use by the NASTRAN program are reserved, and the unit numbers for 
these files are stored in the NASTRAN file allocation tables. An indication of which units are 
physical tapes is also stored. If the number of files available is insufficient to run the pro- 
blem, an error message Is generated, and the run is aborted. 

1.2.2.2 Analysis of the Executive Control Deck (XCSA Section 4.2) 

The Executive Control Deck Is processed and analyzed by the XCSA Executive Preface module. 
The Executive Control Deck includes cards which describe the nature and type of solution to be 
performed. This Includes an identification of the problem, an estimated time for solution of the 
problem, the approach, a selection of the Rigid Format to be executed or an alternative sequence 
of NASTRAN operations (DMAP) to control the solution, a restart deck from a previous run if the 



1.2-4 



NASTRAN EXECUTIVE SYSTEM 

solution is to be restarted, an indication of any diagnos<Jc printout to be made, a specification 
of whether the problem is to be checkpointed or not, and, if a Rigid Format is selected, any 
desired alterations to that format. Section 2 of the User's Manual should be consulted for the 
formats of, and restrictions on, each of the cards in the Executive Control Deck. The approach 
(APP) card, and the solution (S0L) card, which selects a particular solution (Rigid Format) to be 
executed, are worthy of special note. However, first some introductory definitions are required. 

The sequence of operations to be executed during the program body is written in a data block 
oriented language called DMAP, an acronym for "Direct Matrix Abstraction Program". A DMAP instruc- 
tion is a statement in the DMAP language, a DMAP sequence is a set of DMAP instructions, and a DMAP 
loop is a DMAP sequence to be repeated. A DMAP module is one which is "called" by means of a 
DMAP instruction. 

A Rigid Format consists of: a) a fixed pre-stored DMAP sequence and b) its associated 
restart tables. A Rigid Format performs a specific (structural) problem solution. Section 3 of 
the User's Manual presents the DMAP sequence and the associated restart tables for each Rigid 
Format. 

The APP card of the Executive Control Deck defines the problem solution approach. The APP 
card is required, and there are two options on the APP card: DISPLACEMENT or DMAP. The 501 card 
has the form 

S0L n,m 
where n = Rigid Format number, and m = a subset of the Rigid Format. The S0L card is required if 
the DISPLACEMENT option is chosen on the APP card. The S0L card must not be present in the deck 
if the DMAP option is chosen. 

In addition to using the Rigid Formats provided automatically by NASTRAN, the user may wish 
either to execute a series of modules in a manner different from that provided by the Rigid 
Format, or to perform a series of matrix operations which are not contained in any existing Rigid 
Format. If the modifications to an existing Rigid Format are minor, the ALTER feature described 
in Section 2 of the User's Manual may be employed. Otherwise, a user-written Direct Matrix 
Abstraction Program (DMAP) should be used, in which case the card 

APP DMAP 

must be used. Chapter 5 of the User's Manual discusses DMAP. 



1.2-5 



NASTRAN PROGRAMMING FUNDAMENTALS 

Each of the cards comprising the Executive Control Deck is read via XRCARD (3.4.19) and 
analyzed. Depending on the card. Information is either stored in various Executive tables main- 
tained in core storage or written in the Executive Control Table (2.4.2.5) on the New Problem 
Tape for further processing during the general problem initialization phase (XGPI-4.7) of the 
Preface. Figure 3 presents the format of the Problem Tape. The formats of the New and the Old 
Problem Tapes are identical; only chronology defines their separate functions. 

1.2.2.3 Processing of the Case Control Deck (IFPl Section 4.3) 

The Case Control Deck includes the following classes of cards: selection of specific sets 
of data from the Bulk Data Deck, selection of printed or punched output, definition of subcases, 
definition of structural plots to be made, and definition of XY plots to be made. Section 2 of 
the User's Manual discusses in detail all cards of the Case Control Deck. 

This deck is read via XRCARD (3.4.19) and processed. Information defining set selection, 
output selection and subcase definition is written into the Case Control data block, CASECC. 
Information defining plot requests is written in the Plot Control (PCDB) and XY Control (XYCDB) 
data blocks. 

If the problem is a restart, a comparison with the Case Control Deck from the previous run 
is made. Differences are noted in an Executive restart table, which is used 1n the general pro- 
blem initialization phase (XGPI-4.7) of the Preface. 

1.2.2.4 Sorting of the Bulk Data Deck (XS0RT Section 4.4) 

The function of the XS0RT routine is to prepare a file on the New Problem Tape (see section 
1.2.2.1) which contains the sorted Bulk Data Deck (bulk data). Operation of the routine is 
influenced by the type of run. If the run is a cold start, the bulk data is read from the system 
input file (e.g. card reader) or the User's Master File, sorted, and written on the New Problem 
Tape. If the run is an unmodified restart, (restarts are discussed In section 1.10), the bulk 
data is copied from the Old Problem Tape (see section 1.2.2.1) to the New Problem Tape. If the 
run is a modified restart, the bulk data is read from the Old Problem Tape, and cards are deleted 
and/or added in accordance with cards in the system input stream. The modified bulk data is 
sorted and written on the New Problem Tape. Additionally, any changes in the data are noted in 
the Executive restart table. 

A printed list of the unsorted bulk data is given if requested by an ECH0 card in the Case 
Control Deck. Similarly, the sorted bulk data is echoed on request. 

1.2-6 



NASTRAN EXECUTIVE SYSTEM 



All files begin with an 

eight character (2 word) '' 

BCD header record. 



PROBLEM ID FILE 
(always present) 



ALTER FILE 
(only if ALTER 
cards are present) 



;> 



M0NTH I DAY YEAR 

L^ai 2I9 

REEL # 



E|3F^ 



2^ 



XALTER (header) 



EXECUTIVE C0NTROL TABLE FILE 
(always present) 



^^^^^^^^^^E0F^^^^;>^^ 



_ XCSA (header) _ 



CASE C(3NTR0L FILE 
(always present) 



_ CASECC (header) _ 



BULK DATA CARD FILE 
(always present) 



^EgF 



- BULKDATA (header) - 



first and second fields 
from ID card (BCD) 

-problem date 
-reel sequence no. 



(see section 2.4.2.6) 
ijote : ^denotes BCD blank 

(see section 2.4.2.5) 



(see section 2.3.1 .1) 



PARAMETER VALUE FILE 
(only if PARAM cards ' 
are present) 



CHECKP0INT FILES 
(only if CHKP.JT or 
RESTART card is present) 



PR(JB. TAPE DICT. FILE 
(only if CHECKP0IiiT 
FILES are present) 




_ XPTDIC (header) _ 



bulk data card images 



(see section 2.4.2.4) 



-all checkpointed data blocks 
separated by E0F's 



-always the last file 
(see section 2.4,2.3) 



Figure 3. Problem tape format (same format for Hew Problem Tape and Old Problem Tape), 



1.2-7 



NASTRAN PROGRAMMING FUNDAMENTALS 

Since the collating sequence of alphanumeric characters varies from computer to computer, the 
sort routine converts all characters to an internal code prior to sorting. Following the sort, 
the characters are reconverted. In this way, the collating sequence is computer independent. 

The algorithm used by the sort routine is biased toward the case where the data are in sort 
or nearly in sort. Consequently, Bulk Data Decks which are nearly in sort will be processed 
efficiently by the routine. 

1.2.2.5 Processing of the Bulk Data Deck (IFP Section 4.5) 

The sorted Bulk Data Deck is read card-by-card from the New Problem Tape by the Input File 
Processor (IFP) and converted to internal binary form by RCARD (3.4.20). Each of the cards is 
checked for correctness of format. If any data errors are detected, a message is written, and a 
switch is set to terminate the run at the conclusion of the Preface. Section 2 of the User's 
Manual presents a detailed description of all cards of the Bulk Data Deck. 

Processing of each bulk data card depends on the type of card. All bulk data cards of the 
same type are written into the logical record to which the card type has been assigned. These 
records are organized into data blocks classified according to general categories of use and 
written on prescribed preallocated files. 

1.2.2.6 Processing of Conical Shell Data (IFP3 Section 4.6) 

If the problem is a conical shell problem, further processing of the bulk data specific to the 
conical shell problem is accomplished. The nature of this processing is to convert data for 
the conical shell model into formats of a conventional statics problem. The result is that the 
conical shell problem can be described in a format convenient to the analyst and processed by 
NASTRAN in a format convenient to the program. 

1.2.2.7 General Problem Initialization (XGPI Section 4.7) 

The Executive General Problem Initialization (XGPI) module is the heart of the Preface. Its 
principal function is to generate the Operation Sequence Control Array (0SCAR-2.4.2.1) , which 
defines the problem solution sequence. The 0SCAR consists of a sequence of entries, with each 
entry containing all of the information needed to execute one step of the problem solution. The 
0SCAR is generated from information supplied by the user through his entries in the Executive 
Control Deck, This information is supplied by the S0L card, which points to a Rigid Format, or 
by a user supplied DMAP sequence. 



1,2-8 



NASTRAN EXECUTIVE SYSTEM 

The initial sequence of instructions was written in the Executive Control Table (2.4.2.5) 
on the Mew Problem Tape by the XCSA Preface module. This table is read to initiate assembly of 
the 0SCAR. 

If the problem is a restart, the restart dictionary (contained in the Executive Control 
Table) and the Executive restart table are analyzed to determine which data blocks are needed to 
restart the solution and which operations in the 0SCAR need to be executed to complete the 
solution. Entries in the 0SCAR for operations not required for the current solution are flagged 
for no operation. 

To aid in efficient assignment of data blocks to files, two attributes are computed and 
included with each data block in each entry of the 0SCAR. These attributes are: a) the 0SCAR 
sequence number when the data block is next used (NTU) and b) the 0SCAR sequence number when the 
data block is last used (LTU), Details of the file allocation are discussed in section 1.2.3.3. 

When generation of the 0SCAR is complete, it is written on the Data Pool File (P00L). If 
the problem is a restart, data blocks needed for the current solution are copied from the Old 
Problem Tape to the Data Pool File. 

1.2.3 Executive Operations During Problem Solution 

1.2.3.1 Sequence Monitor (XSEMi Section 3.3.7) 

When the Preface has been completed, solution of the problem is initiated. This solution 
is controlled by the sequence monitor. Figure 4 shows the flow for the sequence monitor. Note 
that there are i copies of XSEMi within NASTRAN, one controlling each link's operation. Section 
1.1.2 defined the necessity for these divisions. 

The sequence monitor reads an entry from the 0SCAR (2.4.2.1) which defines one step in the 
problem solution in terms of: the operation to be performed, data blocks required for input, 
data blocks to be output, scratch files required and parameters used. The File Status Table 
(FIST-2.4.1 .3) , which relates the internal data block reference numbers (see section 1.6.4) to 
the file position in the File Allocation Table (FIAT-2.4.1 .2) , is created by the FIST generator, 
subroutine GNFIST. When the status table is complete, XSEMi moves the parameters required for 
the operation into blank common and calls the requested module (if within the current link) to 
begin the operation. If the requested module is not within the current link, ENDSYS (see section 
3.3.5) is called and the Sequence Monitor within the new link is executed. 

1.2-9 



NASTRAN PROGRAMMING FUNDAMENTALS 



c 



ENTER 



J 



Call SEMINT 
(Preface Only) 



Read next 
0SCAR entry 




Generate FIST for 

Input, 0utput, 
Scratch Data Blocks 



Move Parameters 

from VPS 
to Blank Common 



Call module 



No 



Functional 

or ^ "° 
Output Module? 




No 




Yes 



Call EXEC Routine 
(XCEI, CHKPNT, PURGE 
EQUIV, SAVE) 



Call 
ENDSYS 



Call Message 
Writer 
MSGWRT 



3 



Figure 4. Flow diagram for the sequence monitor, XSEMi, 

1.2-10 



NASTRAN EXECUTIVE SYSTEM 

With the exception of XSFA, the seven routines described in the following subsections are 
Executive modules called directly by XSEMi to perform their specified functions. 

1.2.3.2 FIST Generator (GNFIST Section 3.3.9) 

The FIST generator, subroutine GNFIST, creates the File Status Table (FIST), which contains 
the linkage between the internal data block reference numbers and the actual system files listed 
in the File Allocation Table (FIAT). Each input, output and scratch data block required by the 
forthcoming module is assigned an internal reference number if found to be active in FIAT. A 
data block found to be inactive, that is purged or not generated, will not be assigned a reference 
number. This missing reference number will cause the accessing module to be signaled regarding 
the inactive status. If, during the generation of the FIST, a data block is not found in the 
FIAT, active or inactive, the Executive Segment File Allocator (XSFA) module is called by GNFIST 
to make a file available to the subject data block. 

1.2.3.3 Segment File Allocator (XSFA Section 4.9) 

The Executive Segment File Allocator (XSFA) module, which is called exclusively by GNFIST, 
is the administrative manager of data blocks for NASTRAN. Since, in general, the number of data 
blocks required for solution of a problem far exceeds the number of files available, assignment 
of data blocks to files is a critical operation for efficient execution of NASTRAN. 

The Executive Segment File Allocator module is called whenever a data block is required for 
execution of an operation but is not currently assigned to a file, (i.e., does not appear in the 
FIAT). When the Segment File Allocator is called, it attempts to allocate not just for the data 
block initiating the call, but for as much of the remaining problem solution as possible. This 
allocation depends on the type of problem, the number of files available, and the range of use of 
the remaining data blocks. 

The Segment File Allocator reads entries from the 0SCAR from the point of current operation 
to the end of the problem solution. The FIAT table entries are created in which attributes of 
the data blocks. Including their next use (NTU) and last use (LTU), are stored. Data blocks which 
are currently assigned to files but are no longer required for problem solution are released. 
In certain cases, when the range of use of a data block is large, it may not be possible to 
allocate a file to the data block throughout its range of use. In this case, pooling of the 

1.2-11 



NASTRAN PROGRAMMING FUNDAMENTALS 

data block is required so that the file to which the data block was assigned may be freed for 
another allocation. The next time used (NTU) attribute for a data block is used to efficiently 
pool data blocks. In general, the data block whose next use is the furthest from the current 
point is pooled, that is, copied onto the Data Pool File (POOL). The format of the Data Pool 
File is shown in Figure 5. 

One additional check is made with regard to pooling. The operation of the Segment File 
Allocator itself is less expensive than a pooling operation. Therefore, pooling occurs only 
when the module for which the allocation was required cannot be allocated without pooling. 

When the Segment File Allocator is complete, a new File Allocation Table (FIAT) has been 
generated. This table is used until the solution again reaches a point where a data block is 
required to execute an operation but is not assigned to a file. 

1.2.3.4 Interpretation of Executive Control Entries (XCEI Sections 4.11, 4.12, 4.13, 4.14) 

Executive control entries include the DMAP instructions: REPT, JUMP, C(JND and EXIT. 
Executive control entries in the (8SCAR are processed by the Executive Control Entry Interpreter 
(XCEI). When such an entry is encountered in the 0SCAR, the Control Entry Interpreter Is called 
by XSEMi. If the operation is a jump, conditional jump or repeat, the OSCAR is repositioned 
accordingly. If the operation is an exit, the NASTRAN termination routine PEXIT (3.4.22) is 
called. 

1.2.3.5 Checkpointing Data Blocks (CHKPNT Section 4.10) 

The checkpoint module (DMAP name: CHKPNT; entry point name: XCHK) copies specified data 
blocks required for problem restart onto the New Problem Tape and makes appropriate entries 
in the restart dictionary. This dictionary is also punched onto cards as each new entry is made. 
Thus, in the event of any unscheduled problem interruption, a restart from the last checkpoint 
can be made using the Problem Tape and the restart dictionary from the interrupted run. 

1.2.3.6 Purging a Data Block (PURGE Section 4.16) 

The purge routine (DMAP name: PURGE; entry point name: XPURGE) flags data blocks so that 
they will not be assigned to physical files. This special status provides a means for logically 

suppressing a segment of processing steps requiring the data block. Thus, if the function of a 



1.2-12 



NASTRAN EXECUTIVE SYSTEM 



All files begin with an 
eight character (2 word) 
BCD header record. 




0SCAR FILE 
(always present) ' 



v/////////Amy////m^. 



X0SCAR (header) 



^ - - - 



z 




data blocks from DMI'sandDTI's 
(if present) separated by E0F's 

iiote: ^denotes BCD blank 



(see section 2.4.2.1) 



-*-data blocks pooled by XSFA 
(if necessary) separated by 
E0F's 



Figure 5. Format of the Data Pool File. 



1.2-13 



NASTRAN PROGRAMING FUNDAMENTALS 

module 1s to multiply two matrices and add a third matrix to the product, the addition step might 
be deleted by purging the data block corresponding to the third matrix. 

1.2.3.7 Equlvalencing Data Blocks (EQUIV Section 4.17) 

The equivalence routine (DMAP name: EQUIV; entry point name: XEQUIV) attaches one or more 
equivalent data block names to an existing data block. This special status provides a means of 
logically removing a module function by making a data block input to the module equivalent to a 
data block output from the module. Thus an entire module could be skipped, and an input data 
block "copied" to an output data block without physically moving the data from one file to another. 

1.2.3.8 Saving Parameters (SAVE Section 4.15) 

The save routine (DMAP name: SAVE; entry point name: XSAVE) provides a protection feature 
for the parameters conmunicated between, and used by, the functional modules. All variable para- 
meters are stored within the VPS Executive table (see section 2.4). Prior to each module's 
operation, the subset of parameters required by the module Is moved to blank coinnon. The module 
may use or modify this subset of parameters as desired. When the module terminates operation, 
only those parameters within the subset designated to be saved are restored to the Executive 
table. 



1.2-14 



WORD SIZE AND COMPUTER HARDWARE CONSIDERATIONS 

1.3 WORD SIZE AND COMPUTER HARDWARE CONSIDERATIONS 
1.3.1 Introduct-(on 

Although NASTRAN 1s a F0RTRAN oriented system, considerable effort was required to develop 
programming and word handling techniques applicable to four separate computer configurations. 
These computers exhibit wide differences In their binary word sizes and integer representation 
method. The current computer configurations considered and their significant differences follow: 

1. Computer - IBM 7094/7040 DCS 
Word Size - 36 Bits 

Character Capacity - 6 bits/character and 6 characters/word 
Integer Representation - Sign and Magnitude 

2. Computer - IBM System/360 series 
Word Size - 32 Bits 

Character Capacity - 8 bits/character and 4 characters/word (character 5 byte) 
Integer Representation - Twos complement for negative Integers 

3. Computer - UNIVAC 1108 
Word Size - 36 Bits 

Character Capacity - 6 bits/character and 6 characters/word 
Integer Representation - Ones complement for negative integers 

4. Computer - CDC 6600 
Word Size - 60 Bits 

Character Capacity - 6 bits/character and 10 characters/word. 
Integer Representation - Ones complement for negative integers 

Various Executive routines (e.g., XS0RT (4.4), XRCARD (3.4.19)) that deal directly with 
character strings from the input stream require scirs method of obtaining the above computer 
dependent information. Within the NASTRAN Preface, subroutine BTSTRP (3.3.2) solves an algorithm 
that determines which of the four computers Is currently operating. This algorithm functions by 
Inspecting the word length (by means of shifting and testing) and by checking the negative Integer 
representation method. As a result of these tests, a word (MACH) within the SYSTEM Executive 
table (see section 2.4) is set to indicate the computer type. Since data within BTSTRP defines 
the number of bits-per-word (NBPW), the number cf characters-per-word (NCPW), and the number of 

1.3-1 



NASTRAN PROGRAMMING FUNDAMENTALS 

bits-per-character (NBPC) for each computer type, the correct values for these parameters are also 
stored into the SYSTEM table. This table resides within the NASTRAN root segment and is thus 
accessable to any module or subroutine. 

1.3.2 Alphanumeric Data 

Data stored within a computer as binary-coded-decimal (BCD) characters must be represented 
by the proper hardware defined bit codes. These character codes (and in the case of the IBM 
System/360, the number of bits representing the code) vary among the NASTRAN computer types. 
Although the number of characters-per-word could have been obtained from the SYSTEM table, 
various data blocks and buffers within NASTRAN required firm entry sizes, regardless of computer 
type, to facilitate indexing. For these reasons, the minimum number of characters-per-word (4) 
among the four computer types was chosen as a program design standard. Computer types with a 
word capacity of greater than four characters will have the unused low order character positions 
filled with BCD blanks. 

1.3.3 Word Packing 

Standard FORTRAN compilers do not provide the capability for storing or retrieving data that 
occupies less than a full computer word. Through the Machine Word Functions (MAPFNS, 3.4.1) 
routine some limited word packing (not to be confused with matrix packing) is performed within 
the Executive System and a few utility subroutines. Packing provides an efficient use of memory 
space at the expense of the additional operating time needed to contine or separate the elements 
of the packed words. The Machine Word Function 0RF is generally used for combining elements, 
while ANDF with a suitable mask Is used for separating them. 

1.3.3.1 Examples of Machine Word Functions (MAPFNS) Usage 

Assume three 10-b1t Items of data occupy the low order 10 bits of three separate 30-bit 
computer words (A, B, and C). To pack these three items Into a single 30-b1t word (X), perform 
the following steps using the individual functions available within MAPFNS: 

a) Left shift (LSHIFT) word A, twenty bits 

b) Left shift (LSHIFT) word B, ten bits 

c) Logically add (URF) words A and B; store Into X 



1.3-2 



WORD SIZE AND COMPUTER HARDWARE CONSIDERATIONS 

d)' Logically add {0RF) words X and C; store into X. 

Assume two 8-bit items of data are packed into the left and right halves of a 16-bit word (X). 
To unpack these two items into the low order 8 bits of two separate 16-bit words (A and B), per- 
form the following steps using the individual functions available within MAPFNS: 

a) Create MASK containing 8 low order bits equal to 1 and the 8 high order bits equal to 

b) Right shift (RSHIFT) word X, eight bits; store into A 

c) Logically multiply (ANDF) word X by MASK; store into B. 

In the preceding example, the word X remains unchanged since the functions return the 
requested modified result in a computer register. 



1.3-3 



SYSTEM BLOCK DATA SUBPROGRAM (SEHDBD) 
1.4 SYSTEM BLOCK DATA SUBPROGRAM (SEMDBD) 

NASTRAN contains a master block data program (SEMDBD) which is responsible for defining and 
initializing (root segment) common blocks. The common blocks referenced in SEMDBD are either 
Executive common blocks (XFIAT. XXFIAT, XFIST. etc.) which require initial values, or general 
information common blocks (SYSTEM, NAMES. TYPE, etc.) which are referenced by many modules. The 
source listing for SEMDBD identifies the common blocks, and it docurents the data which are 
initialized, via comments. In aodition, the Executive common blocks are documented in section 2.4 
and the non-Executive common blocks in section 2.5. Certain parameters in these coninon blocks 
contain machine dependent values such as word size, number of BCD characters per word, etc. 
These values are set by subroutine BTSTRP (section 3.3.2) by identifying the machine on which 
the fWSTRAN program is currently operating and setting the values accordingly. 



1.4-1 



THE OPEN CORE CONCEPT 

1.5 THE OPEN CORE CONCEPT 

1.5.1 Introduction 

The design philosophy of the NASTRAN system dictated a completely open ended design whenever 
possible. NASTRAN was to have the flexibility to operate on a second generation machine with a 
32K core (the IBM 7094/7040 DCS) as well as the largest of the IBM S/360 series of computers, and 
take complete advantage of the additional core storage without major program changes. The use of 
a fixed dimension for large arrays was outlawed since this automatically restricted the size of 
a problem that could be solved. Instead, modules were to be programmed to allocate space as 
required and to use spill logic to transfer data to scratch files if complete core allocation was 
impossible. In this manner, a problem might cause spill logic to be used on a computer with 
limited core storage, but not on a computer with a larger core storage capacity. 

1.5.2 Definition of Open Core 

The definition of open core is: a contiguous block of working storage defined by a labeled 
common block whose length 1s a variable determined by the NASTRAN Executive function C0RSZ. The 
implementation of this definition by the module writer consists of the origining of a labeled 
common block at the end of his overlay segment. This labeled coranon block contains a dimensioned 
variable of length 1. C^SRSZ returns the number of words of core available between his open core 
origin and the end of core. The module writer can now write his program as if he had dimensioned 
his array by that number. In actuality, he is extending beyond the area reserved for the array 
into an area reserved for the job but not currently used by the segment. When implementing this 
concept, care must be taken to assure that the system does not use this area. 

1.5.3 Example of an Application of Open Core 

Figure 1 demonstrates the use of open core by two subroutines, A and B. By some means, 
which are machine dependent and are discussed in section 5, an end point is established for open 
core. The length of open core is then the difference between this end point and the labeled 
common block. In the example shown, subroutine A will have more open core available to it than 
B does. 



1.5-1 



NASTRAN PROGKAMMING FUNDAMENTALS 



SUBR0UTINE A 
C0MH(3N // XX 
CiWWP /AX/ Z(l) 
INTEGER C0RSZ 
NZ = C0RSZ(Z(1),XX) 
DO 10 I = 1, NZ 
10 Z(I) = I 
RETURN 
END 



SUBRI8UTINE 3 
C0MM0N // XX 
C0MM0N /BX/ Z(l) 
INTEGER C0RSZ 
NZ = C0RSZ(Z(1).XX) 
D0 10 I = l.NZ 
10 Z(I) = I 
• 
• 

RETURN 
END 



Open core for SUB. A 



Blank common 
establishes the end of 
open core for some 
machines (see section 5) 




Open core for SUB. B 



End of open core 
available for this 
job. 



Figure 1. A example of the use of open core. 



1.5-2 



NASTRAN INPUT/OUTPUT 
1.6 NASTRAN INPUT/OUTPUT 

1.6.1 Introduction 

The particular (IBM 7094. IBM S/360, Univac 1108, CDC 6600) operating systen input and out- 
put files provide the required data connection between NASTRAN. the input data decks and the 
printed output. Utility subroutines XRCARD (section 3.4.19) and RCARD (section 3.4.20) convert 
special NASTRAN input card formats to standard F0RTRAN data words easily handled by all NASTRAN 
input processors. Printed output is generated through F0RTRAN formatted write statements. All 
internal data block input/output is handled by GIN0, the system of NASTRAN general purpose input/ 
output routines. GIN(8 provides the required manipulation to tailor the variable length logical 
data records needed by most NASTRAN modules to fixed length records available on all direct access 
mass storage hardware. 

1.6.2 Use of the Operating System Input File 

The system input file is read only by the following routines within the NASTRAN Preface: 

1. SEMINT (see section 3.3.3) reads the first card and processes it using utility 
XRCARD if it is the NASTRAN card (see section 6.3.1). 

2. The Executive Control Deck containing free-field cards is read and processed by XCSA 
(section 4.2) using the XRCARD utility. 

3. The Case Control Deck containing free-field cards is read and processed by IFPl 
(section 4.3) using the XRCARD utility. 

4. The Bulk Data Deck containing fixed-field cards is read by XS0RT (section 4.4). This 
data is subsequently processed by IFP (section 4.5) using the RCARD utility. 

These card conversion utilities (XRCARD and RCARD) provide respectively all the free-field 
and fixed-field data card processing required by NASTRAN. 

1.6.2.1 Use of the Subroutine XRCARD (See Section 3.4.19) 

XRCARD interprets NASTRAN free-field data cards and processes the fields into a sequential 
buffer that can be easily handled by subsequent modules. Free-field data consist of series of 
data items separated by suitable delimiters and punched in non-specific card columns. Data 
items may include alphanumeric, integer, and various types of real variables. Field delimiters 

1.6-1 (12-1-69) 



NASTRAN PROGRAMMING FUNDAMENTALS 

may include the comma, slash, parenthesis, and blanks. For details regarding data and delimiter 
usage and the format of the sequential output buffer, see the XRCARD subroutine description in 
section 3.4.19. 

1.6.2.2 Use of the Subroutine RCARD (See Section 3.4.20) 

RCARD interprets NASTRAM fixed-field data cards and processes the fields into a sequential 
buffer that can be easily handled by subsequent modules. Fixed-field data consist of data items 
punched within specific card fields. Each eighty-column card is divided into an eight-column 
ID field (for the card mnemonic) followed by either eight eight-column data fields or four 
sixteen-column data fields. A special character (asterisk or plus) within the ID field determines 
when the card is to be interpreted as containing sixteen-column fields. The last eight columns 
of the card are for continuation mnemonics used by XS0RT and are not processed by RCARD. The 
data item within the ID field must be alphanumeric. The data items within all other fields may 
include alphanumeric, integer, and various types of real variables. For c'etails regarding data 
and the format of the sequential output buffer, see the RCARD subroutine description in 
section 3,4.20. 

1.6,3 Use of the Operating Svsten Output File 

Although NASTRAN printed output is formed and placed onto the system output file through 
use of standard F0RTRAN formatted write statements, two basic NASTRAN design concepts prohibit 
every operating module from generating printed output. Firstly, since the F0RTRAN 1/0 package for 
output generation occupies a sizable block of computer memory, this package is generally positioned 
by loader directives within specific output oriented segments, rather than within the root segment 
of the overlay, to reduce the total memory requirement. Secondly, because many functional modules 
generate the same or similar diagnostic and information messages, a NASTRAN message writer (MSGWRT) 
was developed to centralize message text and thus prevent duplications within many separate modules. 

For the reasons previously discussed. NASTRAN output generation is restricted to a specific 
class of modules which can reside within an output oriented segment below the link root segment. 
These segments will contain the output producing modules such as the Output File Processor (i»FP- 
section 4.70). the Message Writer (MSGWRT - section 3.4.26). and the various table and matrix 
printers (TABPT - section 3,4.29, HATPRT - section 4.71, etc.) along with the output titling 
(PAGE - section 3.4,24) and necessary F0RTRAN 1/0 packages. 

1.6-2 



NASTRAN INPUT/OUTPUT 
1.6.4 GINg 

GIN0 is a collection of subroutines which provide for all input and output operations within 
NASTRAN except reading data from the resident system input file and writing data on the resident 
system output and punch files. These latter operations are accomplished through F0RTRAN formatted 
read/write statements. NASTRAN programs perform input/output operations by making the following 
calls to GIN0 entry points: 

1. 0PEN (see section 3.4.2) 

0PEN initiates activity for a file (unless the data block assigned to the file is purged, in 
which case an alternate return is given). A working storage area (GIN(3 buffer), for use by 
GIN0, is assigned (allocated) by the calling program thus providing optimum allocation of 
storage by the calling program. This working storage area is reserved for use by GIN0 until 
activity on the file is terminated by a call to CL0SE (see paragraph 4 below). On each of 
the NASTRAN computers, the working storage area allocated by the calling program is separate 
from the actual physical 1/0 buffer. 

2. WRITE (see section 3.4.3) 

WRITE writes a specified (by the calling program) number of words on a file. The block of 
words to be written may comprise an entire logical record or portion of a logical record. 

3. READ (see section 3.4.5) 

READ returns to the calling program a specified (by the calling program) number of words from 
the logical record at which the file is currently positioned. READ may be used to trans- 
mit an entire logical record or portion of a logical record. 

4. CL0SE (see section 3.4.4) 

CL0SE terminates activity for a file. The working storage area assigned at 0PEN is released. 
The file is repositioned to the load point if requested. 

5. REWIND (see section 3.4.8) 

REWIND repositions the requested file to the load point. The file must be "open", i.e. a 
REWIND operation is requested subsequent to a call to 0PEN and prior to a call to CL0SE. 

6. FWDREC (see section 3.4.6) 

FWDREC repositions the requested file one logical record forward. 

1.6-3 



NASTRAN PROGRAMMING FUNDAMENTALS 

7. BCKREC (see section 3.4.7) 

BCKREC repositions the requested file one logical record backwards. 

8. SKPFIL (see section 3.4.10) 

SKPFIL repositions the requested file forward or backward N logical files where N is specified 
by the calling program. 

9. E0F (see section 3.4.9) 

E0F writes a logical end-of-file on the requested file. 

The basic unit of 1/0 in NASTRAN is a logical record. The length of a logical record is 
completely variable and may range from one word to an arbitrarily large number of words. For 
NASTRAN matrix data blocks, the convention was adopted that each column of the matrix would com- 
prise one logical record. For NASTRAN data blocks containing tables, no rigid convention exists. 
Typically each logical record contains one table of a specific type. 

The logical record concept provides greatest ease in programming. However, since these 
records must be stored on a physical device such as a drum, disk or tape, the characteristics of the 
device must be taken into consideration. The bulk of NASTRAN data is stored on drums or disks. 
For both these devices the common unit of organization is a track, which stores a fixed number 
of words. Thus, there is a conflict between the variable length GIN0 records and the fixed 
length tracks. 

This conflict is resolved by blocking. G:N0 acts as the interface between the device and 
the ilASTRAN program. Using this technique, the program itself need not be concerned with device 
considerations (which would create machine dependent code). GIN0 has been parameterized so that 
different devices may be easily accommodated. 

Basically, blocking provides for the reading and writing of fixed-length blocks. The length 
of a block is a function of the device. It may be one track, one-half track or other integral 
division of a track (but never more than one track). Because of the relatively large time to 
access a given position on a track (due to the rotational speed of the device and/or mechanical 
movement of the head to the track), a block size equal to one full track is the most desirable. 
However, limitations in the amount of storage available to hold the blocks in core is a second 
consideration. 



1.6-4 



NASTRAN INPUT/OUTPUT 

Since logical record lengths are variable but the length of records physically read or 
written is fixed, logic must be provided to accommodate this situation. This logic is provided 
in the GIN0 routine, which allows for the following cases: 

1. Multiple logical records per block 

2. Multiple blocks per logical record 

The method by which physical input and output of blocks is accomplished by GIiM0 is machine 
dependent. On the IBi'l 7094, I0EX is used. On the IBM S/360, F0RTRAN binary read/write statements 
are used. On the Univac 1108, NTRAN is used. On the CDC 6600, SC0PE macros are used. These 
implementation differences are transparent to the NASTRAN applications programmer (functional 
module writer). The systems programmer who is interested in implementation details on the various 
machines is referred to section 5. 

1.6.4.1 GIN0 File Names 

The names of files input as arguments to the GIN0 routines listed above may be alphabetic 
(BCD, of the form 4HXXXX ) or integer. 

A GIN0 file name is BCD if the file contains permanent Executive tables or data blocks. A 

list of these files for a particular NASTRAN run resides in the permanent portion of the FIST 

Executive table. The following list presents all current Executive files with their BCD file 
names: 

Oli BCD File Name 

Data Pool File P|30L 

New Problerr, Tape fjpXP 

Old Problem Tape jjpyp 

BCD Plot Tape PLjl 

Binary Plot Tape PLT2 

User's Master File UUF 

New User's Master File NUMF 

User Input File Ifjpj . 



1.6-5 



NASTRAN PROGRAMMING FUNDAMENTALS 

Functional modules should not access these permanent Executive files. Functional modules 
access the files on which their input, output and scratch data blocks reside by internal integer 
6IN0 file names. Prior to calling a functional module, the link driver routine, XSEMi , calls 
subroutine GNFIST (6NFIST is called exclusively by XSEMi) to generate the FIST Executive table. 
For each input, output or scratch data block required for operation of a module (this information 
being contained in the 0SCAR entry), GNFIST searches the FIAT to find the data block. If the data 
block is in the FIAT and a file has been assigned to it, an internal GIN0 file number denoting the 
data block and a pointer (index) to the entry in the FIAT is placed in the FIST. The following 
convention is used for internal GINi3 file numbers: input data blocks -- 100 + position in the 
USCAR entry; output data blocks -- 200 + position in the 0SCAR entry; scratch data blocks -- 301 
through 300 + n where n = number of scratch data blocks as defined in the MPL. (The position in 
the (JSCAR entry is the position in the DMAP instruction). If the data block is in the FIAT and is 
purged, no entry is placed in the FIST. For example, consider the following DMAP calling sequence 
for functional module XYZ: 

XYZ A,B,C/D,E,F,G/V,N,PARM1/V,N,PARM2 $ 

The data blocks input to the module are A, 3 and C; the data blocks output from the module are 
D, E, F and G; the module's parameters are PARMl and PARM2. Note that internal scratch files are 
not mentioned in the DMAP calling sequence. The number of scratch files for a module is defined 
in the Module Property List (MPL) Executive table (see section 2.4) and is communicated to the 
Executive System via the jJSCAR. Details on the syntactical rules of DMAP are given in section 5 of 
the User's Manual. 

In order to read the input data block B, the GIN0 file number internal to XYZ is 102; in 
order to write data block D, the GIN0 file number is 201. The third of, say, five scratch data 
blocks is referenced by XYZ through the GIN0 file number 303. 



1.6-6 



NASTRAN MATRIX ROUTINES 

1.7 NASTRAN MATRIX ROUTINES 

1.7.1 Introduction 

The requirement that NASTRAN handle large structural analysis problems implies that NASTRAN 
should be able to manipulate and store large matrices efficiently and effectively. In general, 
the matrices generated in the displacement approach tend to be sparse (i.e., the number of non- 
zero terms in any column of a matrix is small compared to the order of the matrix). The NASTRAN 
matrix routines, ADD, MPYAD, DEC0MP, etc., which are described in section 3.5, are optimized as 
much as possible to take advantage of matrix sparsity and thus eliminate many unnecessary operation 
on zero elements. In order to aid in these operations and to make effective use of auxiliary 
storage, a packing scheme was devised to store only the non-zero terms in a column. 

1.7.2 Matrix Packing and Unpacking 

The need for a matrix packing routine can be seen by computing the auxiliary storage required 
to hold a 10,000 order matrix which is 1% dense (i.e., the average number of non-zero terms in 
a column is 100). With no packing technique, 10 words of storage are required to hold the 
matrix. Using the NASTRAN packing routines, a maximum of 2 x 10^ words of storage are required 
if the terms are scattered, and 10 words are required if the terms occur in a band. 

The subroutines BLDPK, INTPK, PACK, and UNPACK, along with their additional entry points, 
provide the matrix packing/unpacking capability of NASTRAN. The user should refer to the des- 
criptions of these subroutines in sections 3.5.1 through 3.5.4 for a detailed description of the 
packing logic. 

Matrices are stored by columns, and subroutines PACK/UNPACK provide the ability to pack/ 
unpack a complete column. The capability is also provided to pack/unpacK a column from the first 
non-zero element to the last. 

An added feature of the packing routines is that subroutines BLDPK and INTPK provide the 
capability of packing/unpacking one element at a time. By use of INTPK, a matrix can be read 
element-by-element, such that an entire matrix can be processed without any appreciable core 
storage requirements. Likewise, by using BLDPK, a matrix can be built one element at a time. This 
is an extremely important feature to routines that must process matrices when storage is limited. 



1.7-1 (12-1-69) 



NASTRAN PROGRAMMING FUNDAMENTALS 
1.7.3 The Nested Vector Set Concept Used to Represent Componen ts of Displacement 

In constructing the matrices used in the Displacement Approach, each row and/or column of a 
matrix is associated closely with a grid point, a scalar point or an extra point. Every grid point 
has 6 degrees of freedom associated with it, and hence 6 rows and/or columns of the matrix. Scalar 
and extra points only have one degree of freedom. At each point (grid, scalar, extra) these degrees 
of freedom can be further classified into subsets, depending on the constraints or handling 
required for particular degrees of freedom. (For example in a two-dimensional problem all "z" 
degrees of freedom are constrained and hence belongs to the s (single-point constraint) set). 
Each degree of freedom can be considered as a "point", and the entire model is the collection of 
these one-dimensional points. 

Nearly all of the matrix operations in displacement analysis are concerned with partitioning, 
merging, and transforming matrix arrays from one subset of displacement components to another. 
All the components of displacement of a given type (such as all points constrained by single-point 
constraints) form a vector set that is distinguished by a subscript from other sets. A given 
component of displacement can belong to several vector sets. The mutually exclusive vector sets, 
the sum of whose members are the set of all physical components of displacements, are as follows: 

u points eliminated by multipoint constraints, 
m "^ 

u points eliminated by single- point constraints, 

u points omitted by structural matrix partitioning, 
"^ 

u points to which determinate reactions are applied in static analysis, 
r 
u the remaining structural points used in static analysis (points left over) . 

u extra degrees of freedom introduced in dynamic analysis to describe control systems etc. 

The vector sets obtained by combining two or more of the above sets are (+ sign indicates 

the union of two sets): 

u = u + u„. the set used in real eigenvalue analysis , 
a r a 

u . = u + u , the set used in dynamic analysis by the direct method. 

u d 6 

u, = u + u , unconstrained ( free ) structural points, 

T 3 

u = u- + u , all structural points net, constrained by multipoint constraints, 
n f s 

u = u + u , all structural (grid) points including scalar points, 
g n m 



1.7-2 



NASTRAN MATRIX ROUTINES 

u - Ug + Ug. all physical points. 

In dynamic analysis, additional vector sets are obtained by a modal transformation derived 
from real eigenvalue analysis of the set u^. These are: 

C rigid body ( zero frequency) modal coordinates, 

5f finite frequency modal coordinates, 

5. = 5 + 5,, the set of all modal coordinates. 

One vector set is defined that combines physical and modal coordinates. That set is 
Uh = Cj + u . the set used In dynamic analysis by the modal method. 

The nesting of vector sets Is depicted by the following diagram: 




The data block USET (USETD In dynamics) is central to this set classification. Each word of 
USET corresponds to a degree of freedom in the problem. Each set is assigned a bit in the word. 
If a degree of freedom belongs to a given set, the corresponding bit is on. Every degree of free- 
dom can then be classified by analysis of USET. The common block /BITP0S/ relates the sets to bit 
numbers. 



1.7-3 



NASTRAN PROGRAMMING FUNDAMENTALS 

Two types of operations occur repeatedly. The first is the partitioning or sort operation. 
Examples are: 




(1) 



and 



nn 



=> 



^f f i hi 
"S'fi'^ss 



(2) 



The second is the recombining (or merge) operation: 



h) ^ -:-: 



(3) 



These operations can be completely described by a "partitioning" vector whose length corresponds 
to the length of the major set (the u set in Equation 1) and whose elements are zeros or ones 
depending on whether a degree of freedom belongs to the upper (the u set in Equation 1) subset 
or the lower (the u set in Equation 1) subset. Such a partitioning vector can be constructed 
by subroutine CALCV, which is described in section 3.5.5. This operation is described throughout 
the documentation by the notation USET (UG.UN.UM) where UG (u ) is the major set, UN (u ) is 
the zero set, and UM (u ) is the one set. The partitioning vector generated by subroutine CALCV 
is input to the matrix routine PARTN (section 3.5.6) to perform operations similar to those in 
Equations 1 and 2 and is input to the matrix routine MERGE (section 3.5,6) to perform operations 
similar to that in Equation 3. 



1.7-4 



GENERATION OF MATRICES 

1.8 GENERATION OF MATRICES 

The Structural Matrix Assembler (SMA) modules generate the stiffness, structural damping, 

mass and damping matrices for the structural model. SMAl generates the stiffness matrix exclusive 

X 4 

of general elements, [Kg^], and the structural damping matrix, [K ]; SMA2 generates the mass 

matrix, [M ], and the damping matrix, [B „]; and SMA3 generates the final stiffness matrix, 

[K ], by generating a matrix for each general element in the model, and successively adding 

these matrices to [K^ ]. Other matrix generation modules are: 1) DSMGl, which generates the 

differential stiffness matrix, [Kg ], for use in the Static Analysis with Differential Stiffness 

Rigid Format and in the Buckling Analysis Rigid Format; 2) PLAl , which generates the stiffness 

matrix for linear elements, [!<„„]. for use in the Pieceivise Linear Analysis Rigid Format; 3) 

n£ 
PLA4, which generates the stiffness matrix for nonlinear elements, [K ], for use in the Piecewise 

Linear Analysis Rigid Format; 4) MTRXIN, which provides a two-fold capability: a) to provide 

for direct input matrices such as control systems in the dynamics Rigid Formats, and b) to provide 

the DMAP user a capability of converting matrices input on DMIG bulk data cards to NASTRAN 

matrix format; and 5) the IFP module which provides the user the capability of converting 

matrices input on DMI bulk data cards to NASTRAN matrix format. Detailed information on each 

of these modules can be found in section 4, Module Functional Descriptions. The central role 

that the ECPT data block plays in the formation of the structural matrices generated in modules 

SI1A1, SMA2, DSMGl, PLAT and PLA4 is explained in the following subsections. 

1.8.1 The ECPT Data Block 

NASTRAN embodies a lumped element approach, i.e., the distributed physical properties of a 
structure are represented by a model consisting of a finite number of idealized substructures 
or elements that are interconnected at a finite number of points. An element will affect terms 
in the matrices only in rows and columns related to its interconnected points. Hence each 
column of these matrices may be formed using only elements connected to the grid or scalar point 
associated with that column. 

The Table Assembler (TAl) module constructs the Element Connection and Properties Table 
(ECPT) data block for use in the generation of these structural matrices. Each record of the 
ECPT corresponds to a grid point or a scalar point of the model, and, conversely, every grid 
point or scalar point of the model corresponds to a record of the ECPT. The point to which a 



1.8-1 



NASTRAN PROGRAMMING FUNDAMENTALS 

record of the ECPT corresponds Is called the pivot point of the record. Each record contains the 
connection and properties data for all elements connected to the pivot point. Hence data for an 
element will appear n times, where n is the number of points defining the element. 

1.8.2 Structural Elements 

The basis for the structural matrices in NASTRAN are the finite structural and scalar elements. 
Each element generates matrix terms connecting and connected to the grid and scalar points given 
on its input connection card (e.g., CR0D) . A structural element generates 6 by 6 matrix parti- 
tions related to the six degrees of freedom of each connecting grid point. A scalar element 
generates one term for each connection. 

The stiffness matrix, [K], for a structural element consists of a 6 by 6 partition for each 
combination of the connected grid points. For example, a BAR or R0D element is connected to two 
grid points, "a" and "b". The stiffness matrix partitions are: [K^^], [K^;^], [Ki^^] and [K^^'j. 
A triangular element (e.g., TRMEM) is connected to three points. It will generate nine partitions: 
t^aa^' t^ab^' ^^ac^' ^K,^,]. [K,,], [K,^], [K^,], [K,,] and [K^^]. 

Although the actual equations for the element stiffness, mass and damping matrices are 
different for each element, the solutions follow a definite pattern. The element connection, 
orientation and property data are given in the ECPT data block. The coordinate system data for 
orienting the global coordinates at each grid point are given in the CSTH data block. The 
material properties are given in the MPT and DIT data blocks. A utility routine, PRETRD, is 
available to fetch coordinate system data, and a utility routine, PREMAT, is available to fetch 
material properties. 

1. An element coordinate system is calculated using the locations of the grid points. 
Using these data a matrix, [E], is formed, which transforms displacements from element 
coordinates to basic coordinates. 

2. The stiffness matrix may be formed in element coordinates using many methods. For the 
simple elements (e.g., R0D) the terms are direct functions of the geometry, properties and 
material coefficients of the element. For some elements the matrix is first formulated in 
terms of generalized coordinates, {q}, usually the coefficients of a power series. In 
general coordinates, the matrix is [K 1. Transformation matrices, [H^], are generated to 



1.8-2 



GENERATIOfJ OF I4ATRICES 

transform the displacements at the grid points in element coordinates {u}, to the general 
coordinates {q}. 

3. The global coordinate system orientation matrix, [T], for each grid point is calculated. 

4. The stiffness matrix partition for the columns related to point j and the rows related to 
point i is [K^ J. In general it is formed by the equation 

[K^j] = [T.f[E][H.f[Kq][Hj][Ef[Tj]. (1) 

In order to generate a particular partition, [K. .], it is often necessary to generate [K]. 

' J 

Only those partitions [l^^,-]> where i is the pivot point and j = 1,2 n (n being the number of 

grid points associated with the element), are useful for the current ECPT record being processed. 
The unused partitions are recalculated and used when j f i appears as a pivot point in a sub- 
sequent ECPT record. An alternate procedure for matrix generation, which is not used, would be 
to calculate all of the element matrices once and store them on an auxiliary file for future use 
when needed. The alternate procedure is less efficient for large problems, where efficiency 
really counts, because the recalculation time is less than the time required to recover element 
matrices from the auxiliary file. 



1.8-3 



TERMINATION PHILOSOPHY AND DIAGNOSTIC MESSAGES 

1,9 TERMINATION PHILOSOPHY AND DIAGNOSTIC MESSAGES 

Certain restrictions are placed upon the functional module writer with regard to run 
termination and error diagnostics. This is necessary in order to complete certain functions 
upon terminating and to maintain uniformity with regard to diagnostic messages. 

A functional module writer is required to utilize a message writer (MSGWRT, section 3.4.26) 
to print all of his messages. In this manner similar message formats do not have to be duplicated 
in each module. Also, in order to avoid placing the 1/0 conversion routines and the lengthy 
format statements in the root segment, the message writer is restricted to its own overlay segment, 
Communication between the module and the message writer is via a queued message concept. 
Subroutine MESAGE (section 3.4,25) is called to store the message parameters. In the case of a 
fatal message, a dump is taken if a DIAG 1 card is present in the Executive Control Deck, and 
PEXIT (section 3.4.22) is called. For non-fatal messages, the message is queued and control 
given back to the user. The message queue is printed after each module is executed. 

In order for any routine to terminate the current execution, a call to PEXIT must be made. 
PEXIT handles all the functions necessary to wrap up the run: flushing output buffers, printing 
queued messages, and punching the last card of the checkpoint dictionary. 



1.9-1 



RESTARTS IN NASTRAN 

1.10 RESTARTS IN NASTRAN 

NASTRAN is designed to run large problems with long running times. Even with the best of 
computer systems, a hardware, operator, or system failure is not uncommon for long running jobs. 
At the same time, the large volumes of data and the complexity of the structures that can be 
modeled and analyzed using NASTRAN make it highly likely that user input data errors will occur. 
Many of these errors are of a subtle type, meaning that they cannot be immediately detected in 
the NASTRAN Preface by the modules which process the data decks. To deal with these problems, and 
to save machine time on runs which abort because of data or system errors, NASTRAN has a sophisti- 
cated checkpoint and restart capability (see section 3 of the User's Manual for a discussion of 
restarts from the user point of view). The overall design philosophy for restart is twofold. A 
restart selectively executes only the modules necessary to accomplish a user-input data change. 
The user is able to change any part of his problem including structural model changes, additional 
cases, or more output requests. At the same time restarts are automatic as far as user interference 
is concerned. The user need only checkpoint (see section 1.2.3.5) his original run and submit 
changes to the original run on subsequent runs. The user does not have to analyze the effect of 
his changes. In addition the selective nature of restart allows the program to proceed with 
implicit errors (errors present in the data but not yet identified) until no further valid progress 
can be made. The work accomplished to this point is not lost, but rather only the table or matrix 
data block in error must be corrected to allow the program to proceed. Much error checking can be 
deferred until the actual module using the data is in control. The remainder of this section will 
explain the program mechanics by which restart is accomplished. 

In NASTRAN there are four general types of restarts. Unmodified Restart (UMR), Psuedo Modified 
Restart (PMR), Modified Restart (MR), and Rigid Format Switch (RFS). Note that in the User's Manual 
UMR's and PMR's are described together as Unmodifed Restarts. These classifications are for des- 
criptive and internal purposes. The user need not know anything about which type is which. The 
basic characteristics of each type will be described below. An Unmodified Restart results when the 
user simply resubmits a problem with no data changes. It is used to continue a solution from the 
point of interruption. Presumably the problem aborted previously due to time expiring, machine 
error, system error, etc. The restart dictionary (created while checkpointing) is processed, and 
the solution is started again at the last re-entry point (after the last successful checkpoint). 
A Psuedo Modified Restart occurs when the user requests additional output from the program which 
simply requires the re-execution of an output module such as the Structure Plotter, the Grid Point 

1.10-1 



NASTRAN PROGRAMMING FUNDAMENTALS 

Weight Generator, or the Stress Data Recovery module etc. The numerical solution is not affected 
by these modules; only output is generated. Note that a PMR is the common case since printer out- 
put, plotter output, etc. is usually requested. A true UMR is rare. On a PMR, output modules are 
re-executed to display requested output, and then the problem is continued at the re-entry point. 
A true Modified Restart occurs when some numerically significant data change. The modules which 
process this type of data must be re-executed. These modules are re-executed to regenerate their 
output data blocks based on the new data, and the problem is continued at the re-entry point. A 
Rigid Format Switch is a special form of Modified Restart in which a problem changes from one 
solution type to another. One example would be: a user has solved for the static solution on 
Rigid Format 1 and now wants to find the normal modes by using Rigid Format 3. This may or may 
not require data changes. The key difference here is that the re-entry point cannot be used to 
determine the proper place to restart. The technique by which a RFS is accomplished is to re- 
execute the final modules on the new Rigid Format and let the File Name Table chain the solution 
back to the proper restart point. 

To understand, in general, how the above types of restart are implemented, it is necessary to 
consider the Module Execution Decision Table (HEDT), which is associated with each Rigid Format. 
The Module Execution Decision Table is a table which has one entry for every DMAP instruction in the 
Rigid Format. Each entry is 5 words long; each word contains 31 bits. For convenience, these bits 
are numbered sequentially from left to right with the numbers 1 through 155. If the entry in the 
MEDT for a module has, say, bit 55 turned on, this module will be executed whenever a card or data 
block change associated with bit 55 occurs on a restart. The Card Name Table associates bits of 
the MEDT with selected bulk data card names. Case Control selections and parameter names. The File 
Name Table associates bits of the MEDT with selected data block names. For consistency, bits 1 
through 62 for each entry in the MEDT are reserved for the Card Name Table, and bits 94 through 
155 are reserved for the File Name Table. The following example illustrates the use of these tables 
in determining the effects of changing a bulk data card on a Modified Restart. Suppose the F0RCE 
bulk data card is to be changed when executing Rigid Format 1, The table in section 3.2.3.1 of 
the User's Manual associates bit 60 with the F0RCE card. The decision table for bits 1 through 62 
is shown in section 3.2.3.3 of the User's Manual. DMAP modules BEGIN, FILE, FILE, GP3, SAVE, PARAt-1, 
PURGE, CHKPNT, SSGl , CHKPNT, EQUIV, etc., will be executed since bit 60 is on for each. 

There is one more table, the Rigid Format Switch Table, which is constant for all Rigid 
Formats, and hence resides in Preface module XCSA. The Rigid Format Switch Table associates with 

1.10-2 



RESTARTS IN NASTRAN 

each Rigid Format a bit for each entry 1n the MEDT: bit 63 is associated with Rigid Format 1, bit 
64 is associated with Rigid Format 2, etc. If the restart involves a Rigid Format change, the bit 
in the decision table which is set is the bit corresponding to the Rigid Format of the previous 
execution. 

Each part of the NASTRAN Preface contributes to processing the information for a restart. 
XCSA extracts and stores the Card Name Table, the File Name Table, the Module Execution Decision 
Table, the DMAP sequence and the Rigid Format Switch bit if any. These are written in the XCSA 
Executive Control Table (see section 2.4.2.5) on the New Problem Tape for later use by module XGPI. 
IFF! compares the current CASECC data block with the one submitted on the previous run (a copy of 
CASECC is stored on the Old Problem Tape for this purpose). Three types of changes are noted by 
IFPl: 

1. Changes in data set selection such as Load set, SPC set, etc.; 

2. The occurence of output requests for printer, plotter, etc.; 

3. Changes in the looping structure of the problem. 

The results of this analysis are stored in common block /IFPXO/. Each bit in /IFPXO/ is associ- 
ated with a key name. These names will appear in some Rigid Format's Card Name Table. /IFPXO/ 
contains one bit for every unique entry in the Card Name Table. /IFPXl/ contains these names 
in order given by /IFPXO/. Thus, bit 135 in /IFPXO/ corresponds to the key word, LiaAD$. If bit 
135 is on (non-zero), the status of L0AD$ has changed on this restart. XS0RT analyzes the bulk 
data card changes in a similar manner, setting the proper bits in /IFPXO/. IFP applies certain 
logical rules to combinations of the bits. XGPI then analyzes this information in the following 
manner. For each bit in /IFPXO/ the BCD equivalent is extracted from /IFPXl/. This mnemonic 
is searched for a match in the Card Name Table. If a match occurs, the appropriate bit in a master 
module execution mask is turned on. After all changes have been processed, the master mask is 
logically multiplied (logical and) with each module execution entry. A non-zero results indicates 
that this mcdule is to be executed. 

All bits in /IFPXO/ are classified as either significant to the solution or as only reflecting 
output requests. If only output request bits are on, a PMR is indicated. If the restart is a 
Modified Restart, one further table look-up may be necessary: the resulting DMAP sequence deter- 
mined from the execution flags of the modules may not have the required input data blocks. (All 

1.10-3 (12-1-69) 



NASTRAN PROGRAMMING FUNDAMENTALS 

input data blocks must first appear as output data blocks). If this should be the case (most often 
caused by switching rigid formats), the File Name Table is consulted to determine which bits are on 
and hence which modules should be re-executed to generate the missing data blocks. The resulting 
DMAP sequence causes the selective execution of only those modules necessary to reflect the data 
changes and complete the requested solution. 



1.10-4 



lUTRODUCTION 

2.1 INTRODUCTION 

This section contains descriptions of a) those NASTRAN data blocks which appear in one or 
more Rigid Formats (section 2.3), b) Executive tables maintained by the NASTRAN Executive System 
(section 2.4), and c) Miscellaneous tables used by more than one module (section 2.5). 

Data blocks that appear in Rigid Formats are structural problem oriented and reside on 
physical files. A file is "allocated" to a data block, and a data block is "assigned" to a file. 
The Executive Segment File Allocator (XSFA) Module is the "administrative manager" of files for 
NASTRAN. 

Executive Tables have true executive functions in the sense that they are not oriented to a 
particular problem solution or even to structural analysis in general. They may be core resident 
or may reside on physical files. 

Miscellaneous tables are common blocks which are used by the Executive System and/or a 
particular class of modules (e.g., /GPTAl/ is used only by modules GPl , GP2, GPS and TAl). 
Common blocks that are used for intra-module communications are documented in section 4, Module 
Functional Descriptions, 

Section 2.2.1 contains an index for data block descriptions sorted on data block names, and 
section 2.2.2 contains an index for data block descriptions sorted on the names of modules from 
which they are output. Alphabetical indexes are given for Executive table descriptions and 
miscellaneous table descriptions at the beginning of sections 2.4 and 2.5 respectively. 



2.1-1 



DATA BLOCK DESCRIPTIONS - GENERAL COMMENTS AND INDEXES 

2.2 DATA BLOCK DESCRIPTIONS - GENERAL COMMENTS AND INDEXES 

Data block descriptions have been organized so that all data blocks output from the same 
module are grouped together. The name of each data block 1s given, and the data block is 
classified as a matrix or a table. A data block 1s classified as a matrix only if it Is in 
NASTRAN matrix form, that is, generated by one of the NASTRAN matrix packing routines, PACK or 
BLDPK, the latter having secondary entry points BLDPKI, ZBLPKI and BLDPKN. All other data blocks 
are classified as tebles. 

Following a data block's name and classification is a brief description of its contents, 
followed by its format If it is a table. Since all matrices are In standard [WSTRAN packed 
format a repeated description of the format is unnecessary for matrices. Each data block has a 
header record (consisting in general of two BCD words) which is the alphanumeric name of the data 
block as it appears in a Rigid Format, and this header record 1s designated "Record 0" in table 
formats. For those few data block which contain more than these two BCD words in their header 
record, e.g., SLT, GPTT, DLT, the contents are described explicitly. The conventions used for 
describing the types of words in records of tables are: R Implies real; I implies integer; B 
Implies BCD, four characters per computer word left adjusted with the remaining characters, if 
any, filled with BCD blanks; and L implies a "logical" — not in the F|i)RTRAN sense -- word which 
is a mask of bits, right adjusted. 

There is associated with each data block a six word control block called a trailer. Trailer 
information is "written" by the module which outputs the corresponding data block and can be 
"read" by any module accessing the corresponding data block as Input. If a module "writes" a 
zero trailer for a data block, this implies no data was written In the data block. If a module 
"writes" a non-zero trailer, this implies data was written in the data block. Non-zero trailer 
Information is often used by modules to allocate core storage before reading the corresponding 
data block. Trailer information for each data block is stored in and retrieved from the FIAT 
Executive table (see section 2.4.1.2) by the utility routines WRTTRL (write trailer) and RDTRL 
(read trailer), which are described In section 3.4.16. While residing in the FIAT, a trailer 
is stored in 6 half-words; each half-word consists of 16 binary digits. 

Trailer information is standardized for matrix data blocks, not standardized for table data 
blocks. The format of a matrix trailer is as follows: 



2.2-1 



DATA BLOCK AND TABLE DESCRIPTIONS 

Word 1 » number of columns - N 
Word 2 " number of rows » M 
Word 3 » form » 1 square matrix 

2 rectangular matrix 

3 diagonal matrix |U : l^^^ ^f ^^^ 

4 lower triangular matrix 

5 upper triangular matrix 

6 symmetric matrix 

7 row vector |[| : l^^^^ ^^ ^^^ 

8 Identity matrix 

Word 4 - type - 1 elements of the matrix are real single 
precision 

2 elements of the matrix are real double 
precision 

3 elements of the matrix are complex single 
precision 

4 elements of the matrix are complex double 
precision. 

Word 5 = maximum number of non-zero words (rather than non- 
zero matrix elements) In any one column (e.g., If a real 
double precision matrix Is diagonal and non-zero word 5 • 2) 
Word 6 - not defined 

Word 5 Is dependent upon the structural model and the user's grid point sequencing rather than on 
any Intrinsic property of the matrix and is therefore not described In this report. 

The lower case letters, e.g., g, n, m, s, o. A, etc., used as subscripts designate the sub- 
sets of displacement to which the root symbol (e.g., [K], for a stiffness matrix) applies. The 
reader Is referred to section 3 of the Theoretical Manual and to section 1.7 of the Prograimer's 
Manual for further details. 



2.2-2 



DATA BLOCK DESCRIPTIONS - GENERAL COMMENTS AND INDEXES 



2.2.1 Index for Data Block Descriptions Sorted on Data Block Names 



Section Number 


Data Block Name 


Output From Module 


Page Number 


2.3.47.2 


AUTU 


RAND0M 


2.3-180 


2.3.2.11 


AXIC 


IFP 


2.3-29 


2.3.18.9 


BAA 


SMPl 


2.3-72 


2.3.41.2 


BDD 


GKAD 


2,3-143 


2.3.17.8 


BFF 


SCEl 


2.3-68 


2.3.10.2 


BGG 


SMA2 


2.3-58 


2.3.3.5 


BGPDT 


GPl 


2.3-34 


2.3.49.2 


BHH 


GKAM 


2.3-183 


2.3.16.4 


BNN 


MCE2 


2.3-66 


2.3.27.7 


BQG 


SDRl 


2.3-85 


2.3.41.8 


B2D0 


GKAD 


2.3-145 


2.3.40.3 


B2PP 


MTRXIN 


2.3-142 


2.3.1.1 


CASECC 


IFPl 


2.3-1 


2.3.39.1 


CASEXX 


CASE 


2.3-141 


2.3.42.2 


CLAMA 


CEAD 


2.3-146 


2.3.50.1 


CPHID 


DDR 


2.3-184 


2.3.27.11 


CPHIP 


SORl 


2.3-86 


2.3.3.4 


CSTM 


GPl 


2.3-33 


2.3.27.9 


DELTAPG 


SDRl 


2.3-86 


2.3.27.10 


DELTAQG 


SDRl 


2.3-86 


2.3.27.8 


DELTAUGV 


SDRl 


2.3-85 


2.3.2.7 


DIT 


IFP 


2.3-21 


2.3.29.7 


DLT 


OPD 


2.3-119 


2.3.21.1 


DM 


RBMG3 


2.3-77 


2.3.2.9 


DYNAMICS 


IFP 


2.3-25 


2.3.8.3 


ECPT 


TAl 


2.3-53 


2.3.34.4 


ECPTNL 


PLAl 


2.3-135 


2.3.38.2 


ECPTNLl 


PLA4 


2.3-140 


2.3.4.1 


ECT 


GP2 


2.3-36 



2.2-3 



DATA BLOCK AND TABLE DESCRIPTIONS 



Section Number 


Data Block Name 


Output From Module 


Page Number 


2.3.2.8 


EDT 


IFP 


2.3-24 


2.3.29.4 


EED 


DPD 


2.3-116 


2.3.5.4 


ELSETS 


PLTSET 


2.3-38 


2.3.2.5 


EPT 


IFP 


2.3-16 


2.3.29.5 


EQDYN 


DPD 


2.3-118 


2.3.3.2 


EQEXIN 


GPl 


2,3-31 


2.3.8.1 


EST 


TA1 


2.3-45 


2.3.34.2 


ESTL 


PLA1 


2.3-132 


2.3.34.3 


ESTNL 


PLA1 


2.3-133 


2.3.37.2 


ESTNL1 


PLA3 


2.3-139 


2.3.2.12 


F0RCE 


IFP 


2.3-30 


2.3.29.9 


FRL 


DPD 


2.3-122 


2.3.8.2 


GEI 


TA1 


2.3-53 


2.3.2.1 


GEjlMl 


IFP 


2.3-7 


2.3.2.2 


GEI9M2 


IFP 


2.3-8 


2.3.2.3 


GE(IM3 


IFP 


2.3-13 


2.3.2.4 


GEI3M4 


IFP 


2.3-15 


2.3.15.1 


GM 


MCE1 


2.3-64 


2.3.41.4 


6MD 


GKAD 


2.3-144 


2.3.18.1 


G0 


SMP1 


2.3-70 


2.3.41.5 


G0D 


GKAD 


2.3-144 


2.3.8.4 


GPCT 


TAl 


2.3-54 


2.3.3.3 


GPDT 


GPl 


2.3-32 


2.3.3.1 


GPL 


GPl 


2.3-31 


2.3.29.1 


GPLD 


DPD 


2.3-114 


2.3.5.3 


GPSETS 


PLTSET 


2.3-37 


2.3.9.3 


GPST 


SMAl 


2.3-56 


2.3.7.2 


GPTT 


GP3 


2.3-44 


2.3.18.2 


KAA 


SMPl 


2.3-70 


2.3.33.2 


KBFS 


DSMG2 


2.3-130 


2.3.33.1 


KBLL 


DSMG2 


2.3-130 


2.3.33.3 


KBSS 


DSMG2 


2.3-130 



2.2-4 



DATA BLOCK DESCRIPTIONS - GENERAL COMMENTS AND INDEXES 



Section Number 


Data Block Name 


Output From Module 


Page Number 


2.3.32.1 


KDAA 


SMP2 


2.3-129 


2.3.35,3 


KDAAM 


ADD 


2.3-137 


2.3.41.1 


KDD 


GKAD 


2.3-143 


2.3.17.5 


KDFF 


SCEl 


2.3-68 


2.3.17.6 


KDFS 


SCEl 


2.3-68 


2.3.31.1 


KDGG 


DSMGl 


2.3-128 


2.3.16.3 


KDNN 


MCE2 


2.3-65 


2.3.17.7 


KDSS 


SCEl 


2.3-68 


2.3.17.1 


KFF 


SCEl 


2.3-67 


2.3.17.2 


KFS 


SCEl 


2.3-67 


2.3.12.1 


KGG 


SMA3 


2.3-60 


2.3.12.2 


KGGL 


SfW3 


2.3-60 


2.3.38.1 


KGGNL 


PLA4 


2.3-140 


2.3.35.1 


KGGSUM 


ADD 


2.3-137 


2,3.9.1 


KGGX 


SMAl 


2.3-56 


2.3.34.1 


KGGXL 


PLAl 


2.3-132 


2.3.49.3 


KHH 


GKAM 


2.3-183 


2.3.19.1 


KLL 


RBMGl 


2.3-73 


2,3.19.2 


KLR 


RBMGl 


2.3-73 


2.3.16.1 


KNN 


MCE2 


2.3-65 


2.3.18.3 


KI9I3B 


SMPl 


2.3-70 


2.3.19.3 


KRR 


RBMGl 


2.3-73 


2.3.17.3 


KSS 


SCEl 


2.3-67 


2.3.41.6 


K2DD 


GKAD 


2.3-144 


2.3.40,1 


K2PP 


MTRXIN 


2.3-142 


2,3,18.10 


K4AA 


SMPl 


2.3-72 


2.3.17.9 


K4FF 


SCEl 


2.3-69 


2.3.9.2 


K4GG 


SMAl 


2,3-56 


2.3.16.5 


K4NN 


MCE2 


2.3-66 


2,3.30.1 


LAMA 


READ 


2.3-125 


2.3.20,3 


LBLL 


RBMG2 


2.3-75 


2.3.20.1 


LLL 


RBMG2 


2.3-75 



2.2-5 



DATA BLOCK AND TABLE DESCRIPTIONS 



Section Number 


Data Block Name 


Output From Module 


Page Number 


2.3.18.4 


L00 


SHPl 


2.3-70 


2.3.18.6 


MAA 


SHPl 


2.3-71 


2.3.2.10 


MATP00L 


IFP 


2.3-28 


2.3.41.3 


MOD 


GKAD 


2.3-143 


2.3.5.5 


MESSAGE 


PL0T 


2.3-39 


2.3.17.4 


MFF 


SCEl 


2.3-67 


2.3.10.1 


MGG 


SMA2 


2.3-58 


2.3.49.1 


MHH 


GKAM 


2.3-183 


2.3.30.3 


MI 


READ 


2.3-126 


2.3.19.4 


MLL 


RBMGl 


2.3-73 


2.3.19.5 


MLR 


RBMGl 


2.3-74 


2.3.16.2 


MNN 


MCE2 


2.3-65 


2.3.18.8 


M0AB 


SMPl 


2.3-72 


2.3.18.7 


M00B 


SMPl 


2.3-71 


2.3.2.6 


MPT 


IFP 


2.3-20 


2.3.22.1 


MR 


RBMG4 


2.3-78 


2.3.19.6 


MRR 


RBMGl 


2.3-74 


2.3.41.7 


M2DD 


GKAD 


2.3-144 


2.3.40.2 


M2PP 


MTRXIN 


2.3-142 


2.3.29.10 


NLFT 


DPD 


2.3-122 


2.3.28.21 


0BEF1 


SDR2 


2.3-108 


2.3.28.17 


0BES1 


SDR2 


2.3-104 


2.3.28.10 


0BQG1 


SDR2 


2.3-97 


2.3.42.3 


0CEIGS 


CEAD 


2.3-147 


2.3,28.14 


0CPHIP 


SDR2 


2.3-101 


2.3.28.20 


0EFB1 


SDR2 


2.3-107 


2.3.28.22 


0EFC1 


SDR2 


2.3-109 


2.3.45.13 


0EFC2 


SDR3 


2.3-172 


2.3.28.19 


0En 


SDR2 


2.3-106 


2.3.45.5 


0EF2 


SDR3 


2.3-164 


2.3.30.4 


0EIGS 


READ 


2.3-126 



2.2-6 



DATA BLOCK DESCRIPTIONS - GENERAL COMMENTS AND INDEXES 



Section Number 


Data Block Names 


Output From Module 


Page Number 


2.3.28.16 


0ESB1 


SDR2 


2.3-103 


2.3.28.18 


0ESC1 


SDR2 


2.3-105 


2.3.45.12 


0ESC2 


SDR3 


2.3-171 


2.3.28.15 


0ES1 


SDR2 


2.3-102 


2.3.45.4 


0ES2 


SDR3 


2.3-163 


2.3.14.1 


0GPST 


GPSP 


2.3-63 


2.3.11.1 


0GPUG 


GPMG 


2.3-59 


2.3.37.1 


0NLES 


PLA3 


2.3-139 


2.3.28.5 


0PG1 


SDR2 


2.3-92 


2.3.43.1 


0PHID 


VDR 


2.3-149 


2.3.28.13 


0PHIG 


SDR2 


2.3-100 


2.3.43.5 


0PHIH 


VDR 


2.3-153 


2.3.43.4 


0PNL1 


VDR 


2.3-152 


2.3.45.6 


0PNL2 


SDR3 


2.3-154 


2.3.28.7 


0PPC1 


SDR2 


2.3-94 


2.3.45.9 


0PPC2 


SDR3 


2.3-168 


2.3.28.6 


0PP1 


SDR2 


2.3-93 


2.3.45.1 


0PP2 


SDR3 


2.3-160 


2.3.28.9 


0QBG1 


SDR2 


2.3-96 


2.3.28.8 


0QG1 


SDR2 


2.3-95 


2.3.28.12 


0QPC1 


SDR2 


2.3-99 


2.3.45.10 


0QPC2 


SDR3 


2.3-169 


2.3.28.11 


0QP1 


SDR2 


2.3-98 


2.3.45.2 


0QP2 


SDR3 


2.3-161 


2.3.28.2 


0UBGV1 


SDRl 


2.3-89 


2.3.43.2 


0UDVC1 


VDR 


2.3-150 


2.3.45.14 


0UDVC2 


SDR3 


2.3-173 


2.3.43.3 


0UDV1 


VDR 


2.3-151 


2.3.45.7 


0UDV2 


SDR3 


2.3-166 


2.3.28.1 


0UGV1 


SDR2 


2.3-88 


2.3.43.6 


0UHVC1 


VDR 


2.3-154 



2.2-7 



DATA BLOCK AND TABLE DESCRIPTIONS 



Section Number 


Data Block Name 
0UHVC2 


Output From Module 
SDR3 


Page Number 


2.3.45.15 


2.3-174 


2.3.43.7 


0UHV1 


VDR 


2.3-156 


2.3.45.8 


i3UHV2 


SDR3 


2.3-167 


2.3.28.4 


0UPVC1 


SDR2 


2.3-91 


2.3.45.11 


J3UPVC2 


SDR3 


2,3-170 


2.3.28.3 


0UPV1 


SDR2 


2.3-90 


2.3.45.3 


0UPV2 


SDR3 


2.3-162 


2.3.53.2 


PAF 


DDR2 


2.3-192 


2.3.53.5 


PAT 


DDR2 


2.3-193 


2.3.33.4 


PBL 


DSMG2 


2.3-131 


2.3.33.5 


PBS 


DSMG2 


2.3-131 


2.3.1.2 


PCDB 


IFPl 


2.3-3 


2.3.44.3 


PDF 


FRRD 


2.3-158 


2.3.48.2 


PDT 


TRD 


2,3-181 


2.3.23,1 . 2.3.35.2 PG 


SSGl . AOD 


2,3-79, 2.3-137 


2.3.27.2 


PGG 


SDPl 


2.3-84 


2.3.23,2 


PGl 


SSGl 


2.3-79 


2.3.36.2 


PGVl 


PLA2 


2.3-138 


2.3.30.2 


PHIA 


READ 


2.3-125 


2.3.42.1 


PHID 


CEAD 


2.3-146 


2.3,49.4 


PHIDH 


GKAM 


2,3-183 


2.3.27.4 


PHIG 


SDRl 


2.3-84 


2.3.42.4 


PHIH 


CEAD 


2,3-148 


2.3.24.4 


PL 


SSG2 


2.3-80 


2.3.26.1 


PLI 


SS64 


2.3-83 


2.3.6.1 


PL0TX1 


PL0T 


2.3-40 


2.3.6,2 


PL0TX2 


PL0T 


2.3-40 


2.3,5,2 


PLTPAR 


PLTSET 


2.3-37 


2.3.5.1 


PLTSETX 


PLTSET 


2.3-37 


2.3.48.5 


PNLD 


TRD 


2.3-182 


2.3.48.7 


PNLH 


THD 


2.3-182 


2,3.24.2 


P0 


SSG2 


2,3-80 



2.2-8 



DATA BLOCK DESCRIPTIONS - GENERAL COMMENTS AND INDEXES 



Section Number 
2.3.26.2 
2.3.44.4 

2.3.28.25 

2.3.48.4 

2.3.24.3 

2,3.47.1 

2.3.29.8 

2.3.44.2 

2.3.48.3 

2.3.28.24 

2.3,28.26 

2.3.28.23 

2.3.27.6 

2.3.27.3 

2.3.36.3 

2.3.27.15 

2.3.27.12 

2.3.24.1 

2,3.13.1 

2.3.25.6 

2.3.25,3 

2.3.25.4 

2.3.3.6 

2.3.29.2 

2.3.7.1 

2,3.29.6 

2.3.29.11 

2.3.27.5 

2.3,20,4 

2.3,25,5 

2,3.33.7 

2.3.53,4 



Data Block Name 
P(3I 
PPF 

PPHIG 

PPT 

PS 

PSDF 

PSDL 

PSF 

PST 

PUBGV1 

PUGV 

PUGV1 

QBG 

QG 

QG1 

QP 

QPC 

QR 

RG 

RUBLV 

RULV 

RU0V 

SIL 

SILD 

SLT 

TFP00L 

TRL 

UBGV 

UBLL 

UBLV 

UB00V 

UEVT 



Output From Module 


Page Number 


SS64 


2.3-83 


FRRD 


2.3-158 


SDR2 


2.3-112 


TRD 


2.3-182 


SSG2 


2.3-80 


RAND0M 


2.3-179 


DPD 


2.3-121 


FRRD 


2.3-158 


TRD 


2.3-181 


SDR2 


2.3-111 


SDR2 


2.3-113 


SDR2 


2.3-110 


SDR1 


2.3-85 


SDR1 


2.3-84 


PLA2 


2.3-138 


SDR1 


2.3-87 


SDR1 


2.3-86 


SSG2 


2.3-80 


GP4 


2.3-61 


SSG3 


2.3-82 


SSG3 


2.3-81 


SSG3 


2.3-81 


GP1 


2.3-35 


DPD 


2.3-11^ 


GP3 


2.3-41 


DPD 


2.3-119 


DPD 


2.3-124 


SDR1 


2.3-85 


RBMG2 


2,3-76 


SSG3 


2,3-82 


DSMG2 


2.3-131 


DDR2 


2.3-192 



2.2-9 



DATA BLOCK AND TABLE DESCRIPTIONS 



Section Number 


Data Block Name 


Output From Module 


Paqe Number 


2.3.44.1 


UDVF 


FRRD 


2.3-158 


2.3.50.2 


UDVIF 


DDRl 


2.3-184 


2.3.53.3 


UDV2F 


DDR2 


2.3-192 


2.3.48.1 


UDVT 


TRD 


2.3-181 


2.3,50.3 


UDVIT 


DDRl 


2.3-184 


2.3.53.6 


UDV2T 


DDR2 


2.3-193 


2.3.53.1 


UEVF 


DDR2 


2.3-192 


2.3.27.1 


UGV 


SDRl 


2.3-84 


2.3.36.1 


UGVl 


PLA2 


2.3-138 


2.3.44.5 


UHVF 


FRRD 


2.3-159 


2.3.48.6 


UHVT 


TRD 


2.3-182 


2.3.20,2 


ULL 


RBMG2 


2,3-75 


2.3.25.1 


ULV 


SSG3 


2.3-81 


2.3.27.14 


UPV 


SDRl 


2.3-87 


2.3.27.13 


UPVC 


SDRl 


2.3-87 


2.3.18.5 


U00 


SHPl 


2.3-71 


2.3.25.2 


U00V 


SSG3 


2.3-81 


2.3.13.3 


USET 


GP4 


2.3-61 


2.3.29.3 


USETD 


DPD 


2.3-115 


2.3.1.3 


XYCDB 


IFPl 


2.3-4 


2.3.46,2 


XYPLTFA 


XYTRAN 


2.3-178 


2.3.46.3 


XYPLTF 


XYTRAN 


2.3-178 


2.3.46.4 


XYPLTR 


XYTRAN 


2.3-178 


2.3.46.1 


XYPLTT 


XYTRAN 


2.3-175 


2.3.46.5 


XYPLTTA 


XYTRAN 


2.3-178 


2.3.33.6 


YBS 


DSMG2 


2,3-131 


2.3.13.2 


YS 


GP4 


2.3-61 



2.2-10 



DATA BLOCK DESCRIPTIONS - GENERAL COMMENTS AND INDEXES 



2.2.2 Index for Data Block Descriptions Sorted Alphabeticany by Module 



Section Number 


Module 


Page Number 


Section Number 


Module 


Page Number 


2.3.35 


ADD 


2,3-137 


2.3.38 


PLA4 


2.3-140 


2.3.39 


CASE 


2.3-141 


2.3.6 


PL0T 


2.3-40 


2.3.42 


CEAD 


2.3-146 


2.3.5 


PLTSET 


2.3-37 


2.3.50 


DDRl 


2.3-184 


2.3.47 


RAND0M 


2.3-179 


2.3.53 


DDR2 


2.3-192 


2.3.19 


RBMGl 


2.3-73 


2.3.29 


DPD 


2.3-114 


2.3.20 


RBMG2 


2.3-75 


2.3.31 


DSMG1 


2.3-128 


2.3.21 


RBMG3 


2.3-77 


2.3.33 


DSM62 


2.3-130 


2.3.22 


RBMG4 


2.3-78 


2.3.44 


FRRD 


2.3-158 


2.3.30 


READ 


2.3-125 


2.3.41 


GKAD 


2.3-143 


2,3.17 


SCEl 


2.3-67 


2.3.49 


GKAM 


2.3-183 


2.3.27 


SDRl 


2.3-84 


2.3.3 


GP1 


2.3-31 


2.3.28 


SDR2 


2.3-88 


2.3.4 


GP2 


2.3-36 


2.3.45 


SDR3 


2.3-160 


2.3.7 


GP3 


2.3-41 


2.3.9 


SMAl 


2.3-56 


2.3.13 


GP4 


2.3-61 


2.3.10 


SMA2 


2.3-58 


2.3.14 


6PSP 


2.3-63 


2.3.12 


SMA3 


2.3-60 


2.3.11 


GPWG 


2.3-59 


2.3.18 


SMPl 


2.3-70 


2.3.2 


IFP 


2.3-5 


2.3.32 


SMP2 


2.3-129 


2.3.1 


IFPl 


2.3-1 


2.3.23 


SSGl 


2.3-79 


2.3.15 


MCEl 


2.3-64 


2.3.24 


SSG2 


2.3-80 


2.3.16 


MCE2 


2.3-65 


2.3.25 


SSG3 


2.3-81 


2.3.40 


MTRXIN 


2.3-142 


2.3.26 


SSG4 


2.3-83 


2.3.34 


PLAl 


2.3-132 


2.3.8 


TAl 


2.3-45 


2.3.36 


PLA2 


2.3-138 


2.3.48 


TRD 


2.3-181 


2.3.37 


PLA3 


2.3-139 


2.3.43 


VDR 


2.3-149 








2.3.46 


XYTRAN 


2.3-175 



2.2-11 



DATA BLOCK DESCRIPTIONS 



2.3 DATA BL0CK DESCRIPTIONS 

2.3.1 Data Blocks Output From Module IFP1 

2.3.1,1 CASECC (TABLE) 
Description 

Case Control Data Table 
Table Format 



Record 

1 



Word 



9 

10 
11 

12 



13 

14 

15 

16 

17 

18 

19 

20 

21 

22 

23 

24 

25 

26 

27 

28 

29 

30 

31 

32 

33 

34 

35 

36 

37 

38 

39 



70 



Type 



Item 



Header record 



Subcase number 

Multipoint constraint set 

Single-point constraint set 

External static load set 

Real eigenvalue extraction set 

Element deformation set 

Thermal load set 

Thermal material set 

Transient initial conditions 

Non-linear load output set 

Output media selection - 1 = print, 4 = punch 

Format of output - 1 = real 

2 = real/imag 

3 = mag/phase 
If word 12 <0, S0RT2 is requested 
Dynamic load set 

Frequency response set 
Transfer function set 
Symmetry flag 

Same as 10-12 for load output 



Same as 10-12 for displacement output 

Same as 10-12 for stress output 

Same as 10-12 for force output 

Same as 10-12 for acceleration output 

Same as 10-12 for velocity output 

Same as 10-12 for forces of constraint output 
Time step set selection for transient problem 

32 words of TITLE 



2.3-1 



DATA BLOCK AND TABLE DESCRIPTIONS 



Record 



Word 
71 



102 
103 



134 
135 
136 

137 

138 

139 

140 

141 

142 

143 

144 

145 

146 

147 

148 

149 

150 

151 

152 

153 

154 

155 

156 

157 

158 

159 

160 

161 

162 

163 

164 

165 

166 

167 



166+LSEM 
167+LSEM 
168+LSEM 
169+LSEM 



169+LSEM+LSET 



Type 

B 

B 

8 
B 

B 

P 
I 
I 

I 
I 
B 
B 



B 

I 



Item 



32 words of SUBTITLE 



32 words of LABEL 

Structure plotter flag 
Axisymmetric set - 2 = COSINE 

1 = SINE 
Number of harmonics to output 
Differential stiffness coefficient set 

Name of K2PP matrix 



} 

\ Name of M2PP matrix 

I Name of B2PP matrix 
OUTPUT frequency set selection 
Not defined 
Not defined 

Complex eigenvalue extraction set 
Structural damping table set 
Inertia relief set (Force method only) 

( Same as 10-12 for solution set displacements 
\ Same as 10-12 for solution set velocities 

Same as 10-12 for solution set accelerations 

Non-linear load set in transient problems 

Delete set (Force method only) 

Not defined 

Random analysis set 

Piecewise linear coefficient set 

Not defined 

Length of symmetry sequence (LSEM) 

Coefficients for symmetry sequence 



Set ID 

Length of the set (LSET) 



Set members 



Note 



The above record is repeated for each subcase and symmetry combination. 



2.3-2 



DATA BLOCK DESCRIPTIONS 



Tab! 


e Trai 


ile 


r 






Word 


1 







Word 


2 


= 


7 




Word 


3 


= 







Word 


4 


= 


7 




Word 


5 


= 







Word 


6 


= 


7 



2.3.1.2 PCDB (TABLE) 
Description 

Plot Control Data Table for the structure plotter. 
Table Format 

Record Item 

Header record 

1 The data here is the XRCARD translation of the Structure Plotter 

Packet cards in the Case Control Deck (See Subroutine Description 
for XRCARD). There is one record for each physical card, 

N 
N+1 End-of-file 

Table Trailer 

Words 1 through 3 are zero 

Word 4 = 7777 

Word 5 and Word 6 are zero 



2.3-3 



DATA BLOCK AND TABLE. DESCRIPTIONS 



2.3.1.3 XYCDB (TABLE) 
Description 

XY Output Control Data Block. 

Record one contains the subroutine IFPIXY interpretations of the XY plot output request 
case control data cards. Record two contains an N by 6 matrix stored by rows and sorted such that 
the columns are in sort left to right. N is the total number of combinations specified by the 
XY-plot-request case control data cards. 



Table Format 
Record 



Word 



Type 










1 


1-Last 


Mi) 


2 


1 






2 






3 






4 






5 






6 





Item 



Header record 



IFPIXY interpretations of the XY-output-requests, 
translated for rapid processing by the XYTRAN 
module. 



Subcase number (0 implies all) 

Vector request type 

Point or element ID 

Component 

XY output type 

Destination code 



repeats 
.for all 
rows 



Notes 



3. 





/ 1 = Displacement 






/ 2 = Velocity 






I 3 = Acceleration 






\ 4 = Single-point forces 


of constraint 




) 5 = Load 




Vector request type = 


( 6 = Stress 
] 7 = Force 
/ 8 = Adisplacement 
I 9 = Avelocity 
\ 10 = Aacceleration 
Ml = Nonlinear Force 

( 1 = Response 




XY output type 


< 2 = PSDF 
{ 3 = AUT0 

/ 1 = Print 
\ 2 = Plot 
3 = Print, plot 




Destination code 


' 4 = Punch 

5 = Print, punch 

6 = Plot, punch 

7 = Print, plot, ounch 





4. Either of records 1 and 2 may be null, however they will always exist. 



Table Trailer 



Words 1-5 
Word 6 



nonzero 
one 



2.3-4 



DATA BLOCK DESCRIPTIONS 

2.3.2 Data Blocks Output From Module IFP . 

Module IFP (Input File Processor, part of the NASTRAN Preface) processes the Bulk Data Deck 
sorted by module XS0RT and writes the following data blocks that appear in one or more Rigid 
Formats: GE0M1, GE0M2. GE0M3, GE0M4, EPT, MPT, DIT, EDT, DYNAMICS, MATP00L. Each one of these 
data blocks has the usual 2-word BCD header record. 

Each of these data blocks contains bulk data card images or modified card images of a subset 
of bulk data card types. Each logical record of each of the above data blocks contains all the 
data of a particular card type. If a card type is not present in the Bulk Data Deck, there is no 
record. For each card type present, 3 words are written as header information for the record. 
Then for every logical bulk data card of that type in the Bulk Data Deck, a card image or a 
modified card image is written sequentially in the record. 

The first two words of the header information of each record are used by entry point L0CATE 
of subroutine PREL0C. The third word of the header information is the card number used by the IFP 
programmer to reference tables internal to the IFP module. 

LflCATE is used by routines that wish to read data blocks outout by the IFP. The second word 
of the header information portion of each record corresponds to a bit position in a 96-bit, 
6-word data block trailer, each word containing 16 bits. If a routine requests L0CATE to locate 
(position the file to) a particular card type, L0CATE will determine i^ the card type is oresent 
by interrogating the corresponding bit in the trailer, the bit number having been supplied through 
the calling sequence to L0CATE. If the bit is zero, the card type is not present and L0CATE 
executes a non-standard RETURN. If the bit is one, the card type is present and L0CATE uses the 
first word of the header information, also supplied through the calling sequence, to find the 
proper logical record (card type). 

Since the Bulk Data Deck is sorted alphabetically before IFP processes it, and since IFP 
processes the deck sequentially, the order of the card types in each data block is alphabetical. 
It should be noted that when two trailer bit numbers are given in the description for a card type, 
this implies that: (1) the card is a "multi-entry" card type (more than one logical card on one 
physical card, e.g., CELAS3, CELAS4, CR0D, CTUBE); (2) these card types may or may not be sorted 
with respect to the primary field, in the above examples element identification; and (3) a module 
accessing these card types must know whether or not they are in sort. If they are in sort, the 
second bit number is set to 0; if they are not in sort, the second bit number is set to 1. 

2.3-5 



DATA BLOCK AND TABLE DESCRIPTIONS 

Card type formats correspond to a typical card entry in the logical record allocated to a 
card type. A number (literal) in a card type format implies that the IFP has placed this number 
in its output buffer before writing the information on the file and that this number is not on the 
bulk data card itself. The mnemonics used in the card type formats correspond to the mnemonics 
in the bulk data card section of the NASTRAN User's Manual. It is advised that anyone using the 
information on the following pages secure a copy of this section of the User's Manual for cross 
reference purposes. 

IFP also generates the AXIC and F0RCE data blocks, the Parameter Value Table (PVT) and writes 
Direct Matrix Input (DMI) and Direct Table Input (DTI) cards on the Data Pool File. The AXIC data 
block, whose presence implies a conical shell (a unique structural element) problem solution, is 
processed by the Preface module IFP3. The F0RCE data block is used in the force method only. The 
PVT, which is an Executive Table and is documented in section 2.4, contains the names and values 
of all parameters input by means of the PARAM bulk data card. The PVT is written on the Problem 
Tape. Each DMI in the Bulk Data Deck is output on the Data Pool File in NASTRAN oacked matrix 
format and is indistinguishable from any matrix data block pooled by the XSFA, that is, a matrix 
trailer is written as the last logical record of the data block. IFP also stores the name o^ each 
DMI in the DPL (see section 2,4). Similarly, each DTI is output on the Data Pool File, a table 
trailer is written, and the name of the DTI is stored in the DPL. 



2.3-6 



DATA BLOCK DESCRIPTIONS 



2.3,2.1 GE0M1 (TABLE) 

Card Types and Header Information : 



Card Type 

C0RD1C 

C0RD1R 

C0RD1S 

C0RD2C 

C0RD2R 

C!3RD2S 

GRID 

SEQGP 



card Type 


Trailer 


■ h't 


Position 


Internal 


Card Number 


1701 




17 






6 


1801 




18 






5 


1901 




19 






7 


2001 




20 






9 


2101 




21 






8 


2201 




22 






10 


4501 




45 






1 


5301 




53 






4 



Card Type Formats : 



C0RD1C (6 words) 


CID 
Gl 


C(JRD1R (6 words) 


CID 
Gl 


C0RD1S (6 words) 


CID 
Gl 


C0RD2C (13 words) 


CID 

RID 

A3 

83 

C3 


C0RD2R (13 words) 


CID 

RID 

A3 

B3 

C3 


CpRD2S (13 words) 


CID 

RID 

A3 

83 

C3 


GRID (8 words) 


ID 
X2 
PS 



2 


1 


G2 


G3 


1 


1 


G2 


G3 


3 


1 


G2 


G3 


2 


2 


Al 


A2 


81 


82 


CI 


C2 


1 


2 


Al 


A2 


Bl 


82 


CI 


C2 


3 


2 


Al 


A2 


81 


82 


CI 


C2 


CP 


XI 


X3 


CD 


F0 





If a GRDSET card is present, and if any of fields 3, 7, 8, 9 of any GRID card are blank, 
IFP will insert corresponding data fields from the GRDSET card. Only one GRDSET card may appear 
in the Bulk Data Deck. 



SEQGP (2 words) 



ID 



SEQID 



2.3-7 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.2.2 GE0M2 (TABLE) 

Card Types and Header Information : 

Card Type 

CBAR 

CDAMPl 

CDAMP2 

CDAMP3 

CDAMP4 

CELAS1 

CELAS2 

C EL AS 3 

CELAS4 

CGENEL 

CMASSl 

CMASS2 

CMASS3 

CMASS4 

C0NM1 

C0NM2 

C0NR0D 

CQDMEM 

CQDPLT 

CQUADl 

CQUAD2 

CQUAD3 

CR0D 

CSHEAR 

CT(3RDRG 

CTRAPRG 

CTRBSC 

CTRIAl 

CTRIA2 

CTRIA3 

CTRIARG 

CTRMEM 

CTRPLT 

CTUBE 

CTWIST 

CVISC 

GENEL 

PLjITEL 

QDSEP 

REACT 

SECL 

SECP 

SEQD 

SEQDBFE 

SETR 

SETRBFE 

SP0INT 



Header Word 1 


Header Word 2 


Header Word 3 


Card Type 


Trailer Bit Position 


Internal Card Number 


2408 


24 


180 


201 


2 


69 


301 


3 


70 


401 


4,92 


71 


501 


5,89 


72 


601 


6 


73 


701 


7 


74 


801 


8,91 


75 


901 


9,88 


76 


2008 


20 


186 


1001 


10 


65 


1101 


11 


66 


1201 


12,93 


67 


1301 


13,90 


68 


1401 


14 


63 


1501 


15 


64 


1601 


16 


47 


2601 


26 


60 


2701 


27 


59 


2801 


28 


57 


2901 


29 


58 


2958 


40 


167 


3001 


30,96 


48 


3101 


31 


61 


1908 


19 


104 


1808 


18 


80 


3201 


32 


54 


3301 


33 


52 


3401 


34 


53 


3458 


41 


114 


1708 


17 


79 


3501 


35 


56 


3601 


36 


55 


3701 


37.95 


49 


3801 


38 


62 


3901 


39,94 


50 


4301 


43 


28 


5201 


52,87 


11 


4808 


48 


108 


5251 


62 


88 


7308 


73 


176 


7408 


74 


177 


7508 


75 


106 


4608 


46 


107 


7608 


76 


170 


4708 


47 


116 


5551 


49 


105 



2.3-8 



DATA BLOCK DESCRIPTIONS 



Card Type Formats : 
CBAR (16 words) 



EID 

GB 

X3 

PB 

Z3A 

Z3B 



PID 

XI 

F 

ZlA 

ZIB 



GA 

X2 

PA 

Z2A 

Z2B 



If a BARIilR card is present in the Bulk Data Deck, and if any of the fields 3, 6, 7, 8, 9 of 
any CBAR card are blank, IFP will insert the corresponding data fields from the BAR0R card. Only 
one BARjIR card may appear in the Bulk Data Deck. 



CDAMPl 


(6 words) 


CDAMP2 


(6 words) 


CDAMP3 


(4 words) 


CDAMP4 


(4 words) 


CELASl 


(6 words) 


CELAS2 


(8 words) 


CELAS3 


(4 words) 


CELAS4 


(4 words) 


CGENEL 




CMASSl 


(6 words) 


CMASS2 


(6 words) 


CMASS3 


(4 words) 


CMASS4 


(4 words) 



EID 
G2 


PID 
CI 


EID 
G2 


B 
CI 


EID 
S2 


PID 


EID 
S2 


B 


EID 
G2 


PID 

CI 


EID 

G2 

GE 


K 

CI 

S 


EID 
S2 


PID 


EID 
S2 


K 


Not available. 




EID 
G2 


PID 
CI 


EID 
G2 


M 
CI 


EID 
S2 


PID 


EID 
32 


M 



Gl 
C2 

Gl 
C2 

SI 



SI 



Gl 
C2 

Gl 
C2 



SI 



SI 



Gl 
C2 

Gl 
C2 

SI 



SI 



2.3-9 



Card Type Formats Cont'd.: 



DATA BLOCK AND TABLE DESCRIPTIONS 



C0NM1 (24 words) 


EID 
Mil 
M31 
M41 
M44 
M53 
M61 
M64 


C0NM2 (13 words) 


EID 

M 

X3 

122 

133 


Ci3NR0D (8 words) 


EID 
MID 
C 


CQDMEM (7 words) 


EID 
G2 

TH 


CQDPLT (7 words) 


EID 

G2 

TH 


CQUAD1 (7 words) 


EID 

G2 

TH 


CQUAD2 (7 words) 


EID 

G2 

TH 


CQUAD3 (7 words) 


EID 

G2 

TH 


CR0D (4 words) 


EID 
G2 


CSHEAR (6 words) 


EID 
G2 


CT0RDRG (7 words) 


EID 

G2 




CTRAPRG (7 words) 


EID 

63 

MID 


CTRBSC (6 words) 


EID 
G2 


CTRIAl (6 words) 


EID 
62 


CTRIA2 (6 words) 


EID 
62 



6 


CID 


M21 


M22 


M32 


M33 


M42 


M43 


M51 


M52 


M54 


M55 


M62 


M63 


M65 


M66 


6 


CID 


XI 


X2 


m 


121 


131 


132 


61 


62 


A 


J 


NSM 




PID 


61 


63 


64 


PID 


61 


63 


64 


PID 


61 


63 


64 


PID 


61 


63 


64 


PID 


Gl 


63 


64 



PID 



61 



PID 
63 


Gl 
64 


PID 
Al 


61 
A2 


61 

G4 


62 
TH 


PID 
63 


Gl 

TH 


PID 
63 


61 
TH 


PID 
63 


61 
TH 



2.3-10 (12-1-69) 



Card Type Formats Cont'd.: 



DATA BLOCK DESCRIPTIONS 



CTRIA3 


1 (6 words) 


EID 
G2 


CTRIARG (6 words) 


EID 






63 


CTRMEM (6 words) 


EID 






G2 


CTRPLT (6 words) 


EID 






G2 


CTUBE 


(4 words) 


EID 
G2 


CTWIST 


(6 words) 


EID 
G2 


CVISC 


(4 words) 


EID 
G2 


GENEL 


(open ended) 


EID 

UI2 

UIM 

M 

UD2 

UDN 

N 

Z22 

Z33 

N 



RID 


Gl 


G3 


TH 


Gl 


G2 


TH 


MID 


PID 


Gl 


G3 


TH 


PID 


Gl 


G3 


TH 



PID 



PID 
G3 

PID 



Gl 



Gl 
G4 

Gl 



S22 



UIl 


CIl 


CI2 


• • • 


CIM 


-1 


UDl 


CDl 


CD2 


• * • 


CDN 


-1 


zn 


Z21 


Z31 


Z32 


• ■ • 


ZMM 


Sll 


S12 


SIN 


S21 


• • ■ 


S2N 


SMI 


SM2 


SMN 





PL0TEL (3 words) 


EID 




Gl 


G2 


QDSEP (3 words) 


SEID 




G 


SPID 


REACT (19 words) 


EID 




G 


FE 




LS 




RID 


VTY 




VID 




Zll 


Z22 




Z33 




Z44 


Z55 




Z66 




SFl 


SF2 




SF3 




SM4 


SMS 




SM6 








SECL 


Not aval 


Table. 






SECP 


Not aval 


lable. 






SEQD (open ended) 


QDTYPE (2 words) 


SEID 


AB 




ABID 




BFE 


TVS 




FE 







EIDl 




EID2 




• • ■ 


EIDN 




-1 









SEQDBFE (3 words) 



SEID 



BFE 



2.3-11 (12-1-69) 



DATA BLOCK AND TABLE DESCRIPTIONS 



Card Type Formats Cont'd.: 

SETR Not available. 

SETRBFE Not available. 

SP(ilINT (1 word) ID 



2.3-12 



DATA BLOCK DESCRIPTIONS 



2.3.2.3 GE0M3 (TABLE) 

Card Types and Header Information : 
Card Type 



F0RCE 

F0RCE1 

F0RCE2 

GRAV 

L0AD 

M0MENT 

M0MENT1 

M0MENT2 

PL0AD 

PL0AD2 

RF0RCE 

SL0AD 

TEMP 

TEMPO 



Header Word 1 


Header Word 


2 


Header Word 3 


Card Type 


Trailer 


BU 


Position 


Internal Card Number 


4201 




42 






18 


4001 




40 






20 


4101 




41 






22 


4401 




44 






26 


4551 




61 






84 


4801 




48 






19 


4601 




46 






21 


4701 




47 






23 


5101 




51 






24 


6802 




68 






199 


5509 




55 






190 


5401 




54 






25 


5701 




57 






27 


5641 




65 






98 



Card Type Formats : 



F0RCE (7 words) 


SID 

F 

N3 


F0RCE1 (5 words) 


SID 
Gl 


F0RCE2 (7 words) 


SID 

Gl 

G4 


GRAV (6 words) 


SID 

Nl 


LjlAD (open ended) 


SID 
LI 



-1 



M0MENT (7 words) 


SID 

M 

N3 


M0MENT1 (5 words) 


SID 
Gl 


M0MENT2 (7 words) 


SID 

Gl 

G4 


PL0AD (6 words) 


SID 
G2 


PL0AD2 (3 words) 


SID 


RF0RCE (7 words) 


SID 

A 

N3 



G 
Nl 


CID 

N2 


G 
G2 


F 


G 
G2 


F 
G3 


CID 
N2 


G 

N3 


S 
S2 

-1 


SI 
L2 


G 

Nl 


CID 

N2 


G 
G2 


M 


G 
G2 


M 
G3 


P 
G3 


Gl 
G4 


P 


EID 


G 

Nl 


CID 
N2 



2.3-13 



DATA BLOCK AND TABLE DESCRIPTIONS 



Card Type Formats Cont'd.: 

SLI8AD (3 words) 
TEMP (3 words) 
TEMPO (2 words) 



SID 
SID 
SID 



2.3-14 



DATA BLOCK DESCRIPTIONS 



2.3.2.4 GEJIM4 (TABLE) 

Card Types and Header Information : 

Card Type 



MPC 

MPCADD 

0MIT 

|2IMm 

SPC 

SPCl 

SPCADD 

SUPfJRT 



Header Word 1 


h 


leader Word 2 


Header Word 3 


Card Type 


Trai 


ler Bit Position 


Internal Card Number 


4901 




49 


17 


4891 




60 


83 


5001 




50 


15 


4951 




63 


92 


5501 




55 


16 


5481 




58 


12 


5491 




59 


13 


5601 




56 


14 



Card Type Formats : 
MPC (open ended) 



MPCADD (open ended) 
0MIT (2 words) 



SID 

A 

A 

C 

-1 



SID 



ID 



SI 
S_ 



S2 
-1 



Components can be input in any unique combination of digits 1-6. Output format will be ID 
and one digit, the digits for any one entry being in sort. 



Example: 
Output as: 



0MIT1 (open ended) 
SPC (4 words) 
SPCl (open ended) 

SPCADD (open ended) 
SUP0RT (2 words) 



ID 
12 

12 

3 

12 



SID 
D 

SID 
G2 

-1 

SID 



ID 



c 

3516 




1 
12 

6 


12 
5 


G 
G 


G 
-1 


G 


C 


C 


Gl 


SI 
S„ 


S2 
-1 



The note above concerning the 0MIT card applies to the SUP0RT card as well. 



2.3-15 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.2.5 EPT (TABLE) 

Card Types and Header Informati on: 



Card Type 

PBAR 

PC(3NEAX 

PDAMP 

PELAS 

PGENEL 

PMASS 

PQDMEM 

PQDPLT 

PQUADl 

PQUAD2 

PQUAD3 

PR0D 

PSHEAR 

PT0RDRG 

PTRBSC 

PTRIA1 

PTRIA2 

PTRIA3 

PTRMEM 

PTRPLT 

PTUBE 

PTWIST 

PVISC 

SPQDMEM 

SPQDPLT 

SPQUAD1 

SPQUAD2 

SPQUAD3 

SPTRBSC 

SPTRIAl 

SPTRIA2 

SPTRIA3 

SPTRMEM 

SPTRPLT 



Header Word 1 


Header Word 2 


Header Uord 3 


Card Type 


Trailer Bit 


1=051 tion 


Internal Card Number 


52 


20 




181 


152 


19 




147 


202 


2 




45 


302 


3 




46 


352 


26 




187 


402 


4 




44 


502 


5 




41 


602 


6 




40 


702 


7 




38 


802 


8 




39 


852 


49 




168 


902 


9 




29 


1002 


10 




42 


2102 


21 




121 


1102 


11 




35 


1202 


12 




33 


1302 


13 




34 


1352 


24 




115 


1402 


14 




37 


1502 


15 




36 


1602 


16 




30 


1702 


17 




43 


1802 


18 




31 


6302 


63 




111 


6402 


64 




112 


6502 


65 




109 


6602 


66 




110 


6702 


67 




169 


7302 


73 




174 


7402 


74 




171 


7502 


75 




172 


7602 


76 




178 


7702 


77 




173 


7802 


78 




175 



Card Type Formats : 
PBAR (19 words) 



PC0NEAX (24 words) 



PID 


MID 


A 


11 


12 


J 


NSM 


FE 


CI 


C2 


Dl 


02 


El 


E2 


Fl 


F2 


K1 


K2 


112 






ID 


MIDI 


Tl 


MID2 


I 


MID3 


T2 


NSM 


Z1 


Z2 


PHI1 


PHI2 


PHI3 


PHI4 


PHI5 


PHI6 


PHI7 


PHIS 


PHI9 


PHIIO 


PHIll 


PHI12 


PHI13 


PHI14 



PDAMP (2 words) 



PID 



2.3-16 



DATA BLOCK DESCRIPTIONS 



Type Formats Cont'd.: 








PELAS (4 words) 


PID 
S 


K 


GE 


PGENEL 


Not available. 






PMASS (2 words) 


PID 


M 




PQDMEM (4 words) 


PID 
NSM 


MID 


T 


PQDPLT (8 words) 


PID 


MIDI 


I 




MID2 


T 


NSM 




Zl 


Z2 




PQUADl (10 words) 


PID 


MIDI 


Tl 




MID2 


I 


MID3 




T3 


NSM 


Zl 




Z2 






PQUAD2 (4 words) 


PID 
NSM 


MID 


T 


PQUAD3 (62 words) 


SPID 


RA 


TO 




ZAA 


ZBB 


ZAB 




HS 


Z 


All 




A21 


A31 


A41 




A51 


A61 


A12 




A22 


A32 


A42 




A52 


A62 


Zll 




Z22 


Z33 


Z44 




Z55 


Z66 


Z34 




Z12 


Z13 


Z23 




Z45 


Z46 


Z56 




Z35 


Z14 


Z15 




Z16 


Z24 


Z25 




Z26 


Z36 


sun 




SU14 


SU22 


SU25 




SU33 


SU36 


STA 




STB 


SLll 


SL14 




SL22 


SL25 


SL33 




SL36 


SAT 


SBT 




SAC 


SBC 


TAB 




TAN 


TBN 




PR0D (6 words) 


PID 


MID 


A 




J 


C 


NSM 


PSHEAR (4 words) 


PID 

NSM 


MID 


T 


PT0RDRG (4 words) 


PID 
TF 


MID 


TM 


PTRBSC (8 words) 


PID 


MIDI 


I 




MID2 


T 


NSM 




Zl 


Z2 





2.3-17 



DATA BLOCK AND TABLE DESCRIPTIONS 



Card Type Formats Cont'd.: 








PTRIAl (10 words) 


PID 


MIDI 


Tl 




MID2 


I 


MID3 




T3 


NSM 


Zl 




Z2 






PTRIA2 (4 words) 


PID 
NSM 


MID 


T 


PTRIA3 


Not available. 






PTRMEM (4 words) 


PID 
NSM 


MID 


T 


PTRPLT (8 words) 


PID 


MIDI 


I 




MID2 


T2 


NSM 




Zl 


Z2 




PTUBE (5 words) 


PID 


MID 


(JD 




T 


NSM 




PTWIST (4 words) 


PID 
NSM 


MID 


T 


PVISC (3 words) 


PID 


CI 


C2 


SPQDMEM (4 words) 


SPID 
NSM 


MID 


H 


SPQDPLT (8 words) 


SPID 


MIDI 


I 




MID2 


HS 


NSM 




Zl 


Z2 




SPqUADl (10 words) 


SPID 


MIDI 


HI 




MID2 


I 


MID3 




HS 


NSM 


Zl 




Z2 






SPQUAD2 (4 words) 


SPID 
NSM 


MIDI 


H 


SPQUAD3 (62 words) 


SPID 


RA 


TO 




ZAA 


ZBB 


ZAB 




HS 


Z 


All 




A21 


A31 


A41 




A51 


A61 


A12 




A22 


A32 


A42 




A52 


A62 


Zll 




Z22 


Z33 


Z44 




Z55 


Z66 


Z34 




Z12 


Z13 


Z23 




Z45 


Z46 


Z56 




Z35 


Z14 


Z15 




Z16 


Z24 


Z25 




Z26 


Z36 


sun 




SU14 


SU22 


SU25 




SU33 


SU36 


STA 




STB 


SLIT 


SL14 




SL22 


SL25 


SL33 




SL36 


SAT 


SBT 




SAC 


SBC 


TAB 




TAN 


TBN 






2.3-18 (12-1-69) 







DATA BLOCK DESCRIPTIONS 



Card Type Formats Cont'd.: 

SPTRBSC 
SPTRIAl 
SPTRIA2 
SPTRIA3 
SPTRMEM 
SPTRPLT 



Not available. 
Not available. 
Not available. 
Not available. 
Not available. 
Not available. 



2.3-19 



DATA BLOCK AND TABLE DESCRIPTIONS 



Header Word 1 


Header Word 2 


Header Word 3 


Card Type 


Trailer 


Bit Position 


Internal Card Number 


53 




10, 


143 


103 




1 


77 


203 




2 


78 


1403 




14 


122 


503 




5 


90 


703 




7 


91 


803 




8 


102 


1503 




15 


189 


1103 




11 


185 



2.3.2.6 MPT (TABLE) 

Card Types and Header Information : 

Card Type 

DSFACT 

MAT1 

MAT2 

MAT3 

MATS1 

MATTl 

MATT2 

MATT3 

PLFACT 

Card Type Formats : 

DSFACT (open ended) 

MATl (11 words) 



If any one of E, G or NU is blank, it will be computed to satisfy the identity E = 2 (1+NU)G; 
otherwise, values supplied by the user will be used. 

MAT2 (16 words) 



SID 


81 


B2 




B 


-1 




n 




MID 


E 


G 


NU 


RH0 


A 


TREF 


GE 


ST 


SC 


SS 





MAT3 (16 words) 



MATS1 (11 words) 
MATTl (11 words) 
MATT2 (16 words) 
MATT3 (16 words) 
PLFACT (open ended) 



MID 


Gil 


G12 


G13 


G22 


G23 


G33 


m 


A1 


A2 


A12 


TO 


GE 


ST 


SC 


SS 






MID 


EX 


EY 


EZ 


NUXY 


NUYZ 


NUZX 


RHO 


GXY 


GYZ 


GZX 


AX 


AY 


AZ 


TREF 


GE 






MID 


Rl 


R2 


R3 


R4 




RIO 






MID 


Rl 


R2 


R3 


R4 


• • ■ 


RIO 






MID 


Rl 


R2 


R3 


R4 


. . . 


R15 






MID 


Rl 


R2 


R3 


R4 




R15 






SID 


B1 


B2 




B. 


-1 



2.3-20 



DATA BLOCK DESCRIPTIONS 



2.3.2.7 DIT (TABLE) 

Card Types and Header Infonnation : 

Card Type 

TABDMPl 
TABDMP2 
TABDMP3 
TABDMP4 
TABLEDl 
TABLED2 
TABLED3 
TABLED4 
TABLEMl 
TABLEM2 
TABLEM3 
TABLEM4 
TABLES! 
TABRNDl 
TABRND2 
TABRND3 
TABRND4 

Card Type Formats : 

TABDMPl (open ended) 



Header Word 1 


Header Word 2 


Header Mord 3 


Card Type 


Trailer 


Bit Position 


Internal card Number 


15 




21 


162 


25 




22 


163 


35 




23 


164 


45 




24 


165 


no5 




n 


133 


1205 




12 


134 


1305 




13 


140 


1405 




14 


141 


105 




1 


93 


205 




2 


94 


305 




3 


95 


405 




4 


96 


3105 




31 


97 


55 




25 


191 


65 




26 


192 


75 




27 


193 


85 




28 


194 



TABDMP2 (open ended) 



TABDMP3 (open ended) 



TABDMP4 (open ended) 



ID 























fi 


91 


f2 


92 




^ 


9n 


-1 


-1 




ID 


XI 




















fl 


91 


fa 


92 


... 


% 


% 


-1 


-1 




ID 


XI 


X2 

















f. 


9i 


f2 


92 


... 


^ 


% 


-1 


-1 




ID 


XI 


X2 


X3 


X4 











Ao 


Ai 
A„ 


A2 

-1 





2.3-21 



DATA BLOCK AND TABLE DESCRIPTIONS 



Card Type Formats Cont'd.: 

TABLEDl (open ended) 



TABLED2 (open ended) 



TABLED3 (open ended) 



TABLED4 (open ended) 



TABLEMl (open ended) 



TABLEM2 (open ended) 



TABLEM3 (open ended) 



TABLEM4 (open ended) 



ID 























Xi 


yi 


X2 


yz 


... 


\ 


^n 


-1 


-1 




ID 


XI 




















Xi 


yi 


Xa 


y2 


... 


'^n 


yn 


-1 


-1 




ID 


XI 


X2 

















Xl 


yi 


X2 


y2 


... 


''n 


^n 


-1 


-1 




ID 


XI 


X2 


X3 


X4 











Ao 


Ai 


Az 


• • . 


A 


-1 




n 






ID 























Xl 


yi 


X2 


y2 


... 


'^n 


^n 


-1 


-1 




ID 


XI 




















Xl 


yi 


X2 


yz 


... 


'^n 


^n 


-1 


-1 




ID 


XI 


X2 

















Xl 


yi 


X2 


y2 


... 


^n 


^n 


-1 


-1 




ID 


XI 


X2 


X3 


X4 











Ao 


Ai 


A2 


, , 


A„ 


-1 





2.3-22 



DATA BLOCK DESCRIPTIONS 



Card Type Formats Cont'd.: 



TABLESl (open ended) ID 




yi 



-1 



TABRNDl (open ended) ID 






TABRND2 (open ended) ID 




gi 



TABRND3 (open ended) ID 




gi 



TABRND4 (open ended) ID 

X3 

A, 
A_ 


















Xi 


Xi 


ya 


''n 


^n 


-1 



















fl 


f2 


52 


^ 


% 


-1 




XT 














fl 


f2 


92 


^ 


% 


-1 




XI 


X2 











fl 


f2 


92 


f 


9n 


n 


-1 




XI 


X2 


X4 








Ao 


A2 




-1 





2.3-23 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.2.8 EOT (TABLE) 

Card Types and Header Information ; 

Header Word 1 Header Word 2 Header Word 3 

^^^° 'yP^ Card T ype ' Traner&U Position Irternarcard Number 

DEFURM 104 1 8] 

DF^RM 204 2 161 

Card Type Formats : 

DEF0RM (3 words) SID EID D 

DFSIRM (4 words) SID EID FE 

D 



2.3-24 



DATA BLOCK DESCRIPTIONS 



2.3.2.9 DYNAMICS (TABLE) 

Card Types and Header Information : 



Card Type 


Header Word 1 
Card Type 


Header Word 2 
Trailer Bit Position 


Header Word 3 
Internal Card Number 


DAREA 


27 




17 


182 


DELAY 


37 




18 


183 


DLUAD 


57 




5 


123 


DPHASE 


77 




19 


184 


EIGB 


107 




1 


86 


EIGC 


207 




2 


87 


EIGP 


257 




4 


158 


EIGR 


307 




3 


85 


EP0INT 


707 




7 


124 


FREQ 


1307 




13 


126 


FREQl 


1007 




10 


125 


FREQ2 


1107 




11 


166 


N0LIN1 


3107 




31 


127 


N0LIN2 


3207 




32 


128 


N0LIN3 


3307 




33 


129 


N0LIN4 


3407 




34 


130 


RANDPS 


2107 




21 


195 


RANDTl 


2207 




22 


196 


RL0AD1 


5107 




51 


131 


RL0AD2 


5207 




52 


132 


SEQEP 


5707 




57 


135 


TF 


6207 




62 


136 


TIC 


6607 




66 


137 


TL0AD1 


7107 




71 


138 


TL0AD2 


7207 




72 


139 


TSTEP 


8307 




83 


142 


Card Type Formats: 











DAREA {4 words) 

DELAY (4 words) 
DL0AD (open ended) 



DPHASE (4 words) 
EIGB (18 words) 



SID 


P 


C 


A 






SID 


P 


c 


T 






SID 


s 


SI 


LI 


S2 


L2 


■ • • 


s„ 


L 




n 


n 


-1 


-1 




SID 


P 


c 


TH 






SID 


METHOD (2 words) 


LI 


L2 


NEP 


NOP 


NDN 


E 


N0RM (2 words) 


G 


C 






















2.3-25 



DATA BLOCK AND TABLE DESCRIPTIONS 



Card Type Formats Cont'd.: 
EIGC (open ended) 



EIGP (4 words) 
EIGR (18 words) 



EP0INT (1 word) 
FREQ (open ended) 

FREQl (4 words) 
FREQ2 (4 words) 
NULINl (8 words) 

N0LIN2 (8 words) 

N0LIN3 (8 words) 

N0LIN4 (8 words) 



SID 
G 

"'ai 

'%! 
^d> 

%z 
^e. 
«an 
"bn 



METH0D (2 words) N0RM (2 words) 
C E 



ai 



az 

an 

^n 
-1 



a 2 



"bn 

^en 
-1 



"dn 






-1 


-1 


-1 


-1 


-1 




SID 


a 


OJ 


M 






SID 


METH(JD (2 words) 


Fl 


F2 


NE 


ND 


NZ 


E 


N0RM (2 words) 


G 


C 





















ID 






SID 


F 


F 


F 


• • ■ 


F 


-1 






SID 


Fl 


DF 


NDF 






SID 


Fl 


F2 


NF 






SID 


GI 


CI 


S 


GJ 


CJ 


T 







SID 


GI 


CI 


S 


GJ 


CJ 


GK 


CK 




SID 


GI 


CI 


S 


GJ 


CJ 


A 







SID 


GI 


CI 


S 


GJ 


CJ 


A 








2.3-26 



data block descriptions 



Card Type Formats Cont'd.: 








RANDPS (6 words) 


SID 
X 


J 
Y 


K 
TID 


RANDTl (4 words) 


SID 
TMAX 


N 


TO 


RLCIADI (6 words) 


SID 

N 


L 
TC 


M 
TD 


RL0AD2 (6 words) 


SID 
N 


L 
TB 


M 
TP 


SEQEP (2 words) 


ID 


SEQID 




TF (open ended) 


SID 

BO 

G(l) 

Aid) 

C(2) 

A2(2) 

C(N) 

A2(N) 

-1 


GD 
Bl 

c(i) 

A2(l) 
A0(2) 

A0(N) 

-1 

-1 


CD 

B2 

A0(1) 

G(2) 

A1(2) 

G(N) 

A1(N) 

-1 

-1 


TIC (5 words) 


SID 
UO 


G 
VO 


C 


TL0AD1 (5 words) 


SID 




L 
TF 


M 


TLCIAD2 (10 words) 


SID 



F 

B 


L 
Tl 

P 


M 

T2 

C 


TSTEP (open ended) 


SID 
N!3(l) 
N0 2 
DT(N) 
-1 


N(l) 
N(2) 

N0(N) 
-1 


DT(1) 
DT(2) 
N(N) 
-1 



2.3-27 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.2.10 MATP130L (TABLE) 

Card Types and Header Information : 



Card Type 
DMIG 



Header Vjord 1 
Card Type" 

114 



Header Word 2 
Trailer Bit Positi on 



Header Word 3 
Internal Card Number 

120 



Card Type Formats : 

DMIG (open ended) 

GJ 



GJ 



CJ 



CJ 



NAME (2 words) 


GI 
GI 



GI 
-1 

GI 
GI 



GI 
-1 



CI 
CI 



CI 

-1 

CI 
CI 



CI 

-1 



IF0 




TffliiT ) Header Information 
TIN T0UT Uq^ ^^g ^3^^.^ 



V* 
V* 



V* 
V* 



) (9 words) 



Non-zero terms 
• of the first 
non-zero column 

End of column indicators 



Non-zero terms 
>of the second 
non-zero column 

End of column indicators 



GJ 



CJ 



GI 
GI 



GI 
-1 



CI 
CI 



CI 
-1 



V* 
V* 



V* 



-1 



No n- zero terms 
of the last 
non-zero column 

End of column indicators 
End of matrix indicators 



*V may be 1, 2, or 4 words depending on TIN. 



2.3-28 



DATA BLOCK DESCRIPTIONS 



2.3.2.11 AXIC (TABLE) 

Card Types and Header Information : 



Card Type 

AXIC 

CC0NEAX 

FURCEAX 

M0MAX 

MPCAX 

0MITAX 

P0INTAX 

PRESAX 

RINGAX 

SECT AX 

SPCAX 

SUPAX 

TEMPAX 



Header Word 1 
Card Type' 

515 
2315 
2115 
3815 
4015 
4315 
4915 
5215 
5615 
6015 
6215 
6415 
6815 



Header Hord 2 
Trailer Bit Position 

5 

23 
21 
38 
40 
43 
49 
52 
56 
60 
62 
54 
68 



Header Word 3 
Internal Card Number 

144 
146 
156 
157 
149 
150 
152 
154 
145 
153 
148 
151 
155 



Card Type Formats : 



AXIC (2 words) 


H 







CC0NEAX (4 words) 


ID 
RB 


PID 


RA 


F0RCEAX (7 words) 


SID 

S 

FZ 


RID 

FR 


HID 
FP 


M!3MAX (7 words) 


SID 

S 

MZ 


RID 
MR 


HID 
MP 


MPCAX (open ended) 


SID 

C 

HID 

c" 

-1 


RID 

A 

C 

RID 

A 

-1 


HID 

RID 

A 

HID 

-1 

-1 


i3MITAX (3 words) 


RID 


HID 


C 


PJIINTAX (3 words) 


ID 


RID 


PHI 


PRESAX (6 words) 


SID 
RID2 


P 
PHIl 


RIDl 
PHI2 


RINGAX (4 words) 


ID 
C 


R 


Z 


SECTAX (5 words) 


ID 

PHIl 


RID 
PHI2 


R 


SPCAX (5 words) 


SID 
C 


RID 
V 


HID 


SUPAX (3 words) 


RID 


HID 


C 


TEMPAX (4 words) 


SID 
TEMP 


RID 


PHI 



2.3-29 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.2.12 F0RCE (TABLE) 

Card Types and Header Information : 

Card Type 

EDFIR 

ELDELE 

MASSC 

VECDN 

VECGP 

ZI 



Header Word 1 


Header Word 2 


Header Word 3 


Card Type 


Trailer 


BU Position 


Internal Card l^lumber 


1513 




15 


160 


1913 




19 


188 


3313 




33 


159 


8313 




83 


117 


8413 




84 


118 


8913 




89 


113 



Card Type Formats : 



EDFIR (7 words) 


SID 
EID 
FE 


EID 
FE 


FE 
EID 


ELDELE (7 words) 


SID 
EID 
FE 


EID 
FE 


FE 
EID 


MASSC (8 words) 


GPl 
DF 


DF 
MASS 


GP2 
GP3 




DF 


MASS 




VECDN (5 words) 


VID 
B 


GID 
C 


A 


VECGP (5 words) 


VID 
G3 


Gl 
G4 


G2 


ZI (5 words) 


EIDl 
FE 


FE 
Z 


EI02 



2.3-30 



DATA BLOCK DESCRIPTIONS 



2.3.3 Data Blocks Output From Module GP1 

2.3.3.1 GPL (TABLE) 

Description 

Grid Point List. 

First logical record contains a list of external grid and scalar numbers in internal sort. 
Second logical record contains pairs of external grid and scalar numbers and sequence 
numbers in internal sort. 

Table Format 



Record 



Word 



Item 



Header record 



) repeated for each 
External grid or scalar number > grid or scalar point 

j in model 

External grid or scalar number ) '■epeated for each 
Sequence number (9^'^^ or scalar point 

) in model 



End-of-file 



Notes 

1. Internal is implied by word position in record one. 

2. Sequence number = 1000 * external number unless replaced by a new sequence number 
on a SEQGP card. 

3. All data words are integers. 
Table Trailer 



Word 1 
Word 2-6 



number of external grid points + number of scalar points, 
zero. 



2.3.3.2 EQEXIN (TABLE) 
Description 

Equivalence between external grid or scalar numbers and internal numbers. 

First record contains pairs of external grid and scalar numbers and internal numbers in 
external sort. Second logical record contains pairs of external grid and scalar numbers 
and coded SIL numbers in external sort. 



2.3-31 



DATA BLOCK AND TABLE DESCRIPTIONS 



Table Format 
Record 


1 



Word 



Item 
Header record 

External grid or scalar number 
Internal number 



External arid or scalar number 
10*SIL number + code 

End-of-file 



repeated for each 
qrid or scalar point 

in model 

repeated for each 
grid or scalar point 
in model 



Motes 

1. All data words are integers. 

r H - /^ ^°'" 9'^''"^ point 
i. Lode - <^2 for scalar point 

Table Trailer 

Word 1 = number of grid points + number of scalar points. 

Word 2-6 = zero. 

2.3.3.3 GPDT (TABLE) 

Description 

Grid Point Definition Table. 

One logical record contains list of all grid and scalar points with associated coordinate 
system and constraint information. List is in internal sort. 



Table Format 
Record 

1 



Word 



Item 

Header record 

Internal number 

Coordinate system ID that defines x, y, z 

x\ /R\ /P\ depending on f reoea ted for each 

y or e or 9 defining coordinated ^.^^f/.S'^^f ^' 
,z/ \z/ \<t>/ system I 

Coordinate system ID for displacements 
Constraint code 

End-of-file 



Notes 



1. Words 3-5 are single precision floating point; all other words are intener. 

2. Scalar points are identified by coordinate system ID = -1, and words 3-7 are all zero. 

3. See description of the GRID bulk data card in the User's Manual for a definition of the 
constraint code. 



2.3-32 



DATA BLOCK DESCRIPTIONS 



Table Trailer 

Word 1 = number of grid points + number of scalar points. 
Word 2-6 = zero. 

2.3.3,4 CSTM (TABLE) 

Description 

Coordinate System Transformation Matrices. 

One logical record contains all coordinate system transformations. Transformation is from 
global to basic by the following formulation: 

(1) rectangular 

21 
'B \'"31 

(2) cylindrical 

^22 
"32 










(3) spherical 






Table Format 
Record 



Word 

1 

2 

3-5 
6-14 



Item 
Header record 

Coordinate system ID 

n = rectangular 

Coordinate system type < 2 = cylindrical 

( 3 = spherical 

*1 • *2' *3 

•"ll* '"l2' '"13' '"2T '^22* ''23' ''31* '^32' ""33 

End-of-file 



repeated 
, for each 
coordinate 
system 



2.3-33 



DATA BLOCK AND TABLE DESCRIPTIONS 

Notes 

1. Coordinate system ID and coordinate system type are integers. 

2. t- and r.. are single precision floating point. 

Table Trailer 

Word 1 = number of grid points + number of scalar points. 

Word 2 = number of coordinate systems. 

Word 3-6 = zero. 



2.3.3.5 BGPDT (TABLE) 

Description 

Basic Grid Point Definition Table. 

One logical record contains a list of all grid and scalar points in internal sort, with 
(for grid points) their x, y. z coordinates in the basic system along with a coordinate 
system ID for displacement computations. 



Table Format 
Record 

1 



Word 



1 

2-4 



Item 
Header record 

1 ren 
X, y, z in basic system /qri 

End-of-file 



Coordinate system ID ^reneated for each 

d or scalar point 



Notes 



1. Coordinate system ID is integer; x. y, z are single precision, floating point. 

2. Scalar points are identified by coordinate system ID = -1 , and x, y, z = 0. 



Table Trailer 



Word 1 = number of grid points + number of scalar points. 
Word 2-6 = zero. 



2.3-34 



DATA BLOCK DESCRIPTIONS 



2.3.3.6 SIL (TABLE) 

Description 

Scalar Index List. 



One logical record that contains a list of SIL numbers for each grid or scalar ooint 
The list is in internal sort, therefore, internal number is implied by word position' 
in the record. Definition of SIL numbers is as follows: 



Let i = 


= internal n 


umb( 


ir, then 




SIL^ 


= 


1. 




S^Li.i 


= 


/SIL. + 6 if i 
ISIL: +1 if i 


Table Format 








Record 


Word 




Item 









Header record 


1 


1 




SIL^ 




n 




SILp 


2 






End-of-file 



grid point 



Notes 

SIL numbers are integers. 

Table Trailer 

Word 1 = number of grid points + number of scalar points. 

Word 2 = degrees of freedom in the g-displacement set. 

Word 3-6 = zero. 



2.3-35 



DATA BLOCK AND TABLE DESCRIPTIONS 

2,3.4 Data Blocks Output From Module GP2 

2.3.4.1 ECT (TABLE) 

Description 

Element Connection Table. 

The ECT contains one logical record for each element connection card type that has been 
input. Additionally, the ECT contains one logical record for GENEL elements if they have 
been input. 



Table Format 



The ECT is identical in format to data block GE0M2, output from module IFP. All 
external grid or scalar numbers are replaced by internal numbers. SP0INT data Is 
not copied on the ECT. 



Table Trailer 

Identical to trailer on GE(JM2 data block. 



2.3-36 



DATA BLOCK DESCRIPTIONS 

2.3.5 Data Blocks Outrut From Module PLTSET 

2.3.5.1 PLTSETX (TABLE) 
Descrintion 

User error n;es5oges related tc the definition of element nlot sets for the structure plotter. 
Table Format 

See the descriotion of the ''ESSAGE table, section 2.3.5.5. 
;<ote 

PLTSETX is generated in subroutine SETIiJP. 

Table Trai 1er 

►Jord 1-5 = 
Word 6 = 1 

2.3.5.2 PLTPAR (TAiiLE) 
^description 

Plot parameters and plot control table. 
Table Format 

Record '.Jord I tem 

header record 

1 junlicate of the nlot control data block 

2 (PCDB) created in the IFPl module except 

3 that all plot set definitions have been 
etc. deleted. 

Last End-of-file 

fiote 

PLTPAR is generated in subroutine SETINP. 

Table Trailer 

Word 1-5 = 
Aora 6 = 1 

2.3.5.3 GPSETS (TABLE) 
Description 

Grid ncint sets related to the element nlot sets. 



2.3-37 



DATA BLOCK AND TABLE DESCRIPTIONS 



Table Fonnat 

Record 



1 

2-(rjSETS+l) 



iJSETS+2 



Word Item 

Header record 

1-NSETS Element plot set ID's (integer) 

1 Number of orid points in an element set 

2-(iinf'+l) Pointers to the grid points in this element set (inteoers) 

1 If = 0, the grid noint is not in this set 

2 If ^ 0, this is an internal index relative to only the grid 

noints in this elerent set (if negative, this nrid 
point is to be excluded when used to draw deformed 
Shanes and vectors) 

End-of-file 



Notes 



1. WSETS = number of element sets 

2. iJGP = total number of structural grid points 

3. GPSETS is Generated in subroutines SETINP and CNSTPX 



Table irailer 



Word 1-5=0 
Word 6 = 1 



2.3.5.4 LLSETS (TABLE) 
Description 

Element nlot set connection tables. 
Table Format 

Word 



Record 


1-NSETS 



jroup 



1-NTYPS 



2-(M+l) 
i^+2 



Item 



Header record 



iiSETS+l 



.'lumber of grid noints r^er elen'ent of a given 
element type (integer) Mote: If less than 3 or 
negative, this element type does not define a 
closed area. 

Grid point indices relative to all grid points 
defining each element of this type (integers) 
Integer zero 

End-of-file 



Notes 



1. USETS = number of element plot sets 

2. UTYPS = number of element types represented in an element plot set 

3. N = number of connection grid points for all elements of a given type in an element 

plot set 
= (number of grid points per element of a given type) X 
(number of elements of a given type in an element set) 

4. ELSETS is generated in subroutine CNSTRC 



2.3-38 



DATA BLOCK DESCRIPTIONS 



Table Trailer 



Word 1-5 = 
IJord 6 = 1 



2.3,5.5 MESSAGE (TABLE) 
Description 



llessages to be processed by the message writer module (PRTMSR). Each message may either be a 
physical or logical record. This data block is never really created as such, but is included 
so as tc exnlain other data blocks such as PLj^TXl, PL53TX2, etc., and is referenced in the 
Table Formats of these data blocks. 

Table Format 

Record Word Item 

Header record 

A given logical record in a given physical record can be of tv;o alternate forms 

A. Record Hord Item 

i j If = -1, -2, -3, -4, -5, or -6, then the next 32 words is a nev; 

title for the 1st, 2nd, 3rd, 4th, 5th, or 6th lines on all 
printed pages to follow from this message table (inteaer) 
(.J+1)-(.i+32) The 32 4-character BCD words for this title 

B. Record Word I ten 

i j "JLIST = number of list itei"S (integer) 

(j+l)-(.i+f^LIST) List items (mixed mode) 

j+NLIST+l NF = size of format to be used to print these list items 

(integer) 
(j+iNLIST+2)- 

(j+ULIST+HF+1) Format to be used to print this list (series of consecutive BCD 
characters) 



2.3-39 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.6 Data Blocks Output From Mo d ule PLjZIT 

2.3.6.1 PL2ITX1 (TABLE) 
Cdscription 

User messages from the plot module relative to the undcfomied structural shapes 
Table Format 

See the description of the "lESSAnE table, section 2.3.b.5 

Table Trailer 

IJord 1-5 = 
Word G = 1 

2.3.6.2 PL0TX2 (TABLE) 
Description 

User messaqes from the plot module relative to the defonned structural shares oenerated in the 
statics analysis 

Table Format 

See the description of the fCSSAGE table, section 2.3.5.5 

Table Trailer 

Word 1-5=0 
Word C = 1 



2.3-40 



DATA BLOCK DESCRIPTIONS 



2,3.7 Data Blocks Output From Module GP3 

2.3.7.1 SLT (TABLE) 

Description 

Static Loads Table. 

The header record of the SLT contains a sorted list of all unique load set ID's contained 
on static load cards except the L0AD card itself. The n logical records that follow the 
header record comprise all static loads data belonging to each of the n load sets, one 
logical record per load set. The (n+l)st logical record contains all L0AD cards (if any). 



Table Format 








Record 


Word 


Type 


Item 





1-2 
3 


B 

I 


Data block name 

Load set ID 

1 




2+n 


I 


Load set ID^ 


1 


1.2 


I 


Load card type, m 




n 




Load data as function 
of load card type. . 
repeated m times 



2+g, 



repeated for each 
different load card 
type belonging to 
load set number 1 



n+1 



n+2 



Same format as record 1 

Data belongs to load set number n 



1.2 
3-4 


I.R 
I.R 


Load set ID, scale factor " 
Load set ID, scale factor / 

1 


f repeated 
> for each 
i L0AD card 


2k+3,2k+4 


I 


-1,-1 
End-of-file 


) 



Notes 



The SLT is generated in subroutine GP3A. 

Card type ID's and format for data for each bulk data card type are as follows: 

3 = FURCEl 

Word Type Item 



1 
2 
3-4 



Internal grid number 
Signed magnitude of applied load 
Internal grid numbers of grid points 
that define direction 



2.3-41 



FgfRCE2 



1 = FjJRCE 



DATA BLOCK AND TABLE DESCRIPTIONS 



Word Type Item 

1 I Internal grid number 

2 R Signed magnitude of applied load 
3-6 I Internal grid numbers of grid points 

that define direction 



Word Type Item 

1 I Internal grid number 

2 I Coordinate system ID 

3 R Signed scale factor for applied force 
4-6 R Force components 



8 = GRAV 



Word Type Item 

1 I Coordinate system ID 

2 R Gravity vector scale fact 
3-5 R Gravity vector components 



4 = M0MENT1 

See F0RCE1 , substituting "moment" for "force". 

6 = M0MENT2 

See F0RCE2, substituting "moment" for "force". 

2 = M0MENT 

See F0RCE, substituting "moment" for "force". 



9 = PLpAD 



7 = SL0AD 



Word Type Item 

1 R Pressure 

2-5 I Internal grid numbers 



Word Type Item 

1 I Internal scalar number 

2 R Applied load 



2.3-42 



DATA BLOCK DESCRIPTIONS 



10 = RF(3RCE 



Word 



Ml 



1 


I 


2 


I 


3 


R 


4-6 


R 



Item 

Internal grid number 

Coordinate system ID 

Scale factor 

Components of rotation direction vector 



11 = PRESAX 



Word 

1 

2-3 
4-5 
6 



R 
I 
R 
I 



Item 

Pressure value 
Ring ID's 
Azimuthal angles 
Number of harmonics 



3. With the exception of GRAV and PL0AD card types, data of a given card type within a 
logical record is in sort on internal grid (or scalar) number at which the load is 
applied. 

4. If no L0AD cards have been input, the (n+l)st record does not exist. 

Table Trailer 

Word 1 = number of load sets. 
Word 2-6 = zero. 



2.3-43 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.7.2 GPTT (TABLE) 



Description 



Grid Point Temperature Table. 

The header record of the GPTT contains sorted triples of temperature set ID, default 
temperature, and flag. For each temperature set for which temperature data is defined at the 
grid points, a logical record in the GPTT is present. 



Table Format 




Record 


Word 





1-2 
3 




4 




5 


1 


1 
2 



Item 

Data block name (BCD) 

Temperature set ID, (integer) 

(Default temperature (floating point) 

(-1 if no default temperature defined (integer) 

(0 if only default temperature for set (integer) 

<>0 record number of temperature data for set 

( (integer) 



I repeated 

for each 
' temperature 

set 



Internal grid number (integer)) repeated for every grid point at 
Temperature (floating point) (which a temperature Is defined 



k 
k+1 



Same format as record 1 
End-of-file 



Notes 

1. The GPTT is generated in subroutine GP3B. 

2. A temperature set may be defined as consisting only of a default temperature that 
applies to all grid points. 

3. A default temperature (if defined) Is to apply to all grid points for which a 
temperature has not been defined. 

4. Each data record is in sort on internal grid number. 
Table Trailer 



Word 1 
Word 2-6 



undefined. 



2.3-44 



DATA BLOCK DESCRIPTIONS 



2.3.8 Data Blocks Output From Module TAl 

2.3.8.1 EST (TABLE) 

Description 

Element Summary Table. 

The EST is a collection of data for all elements of the structural model. It contains one 
logical record for each element type. For each element: connection data, properties data, 
basic grid point data and the element temperature are grouped. General elements and elements 
that belong to super elements are not included in the EST. 

Table Format 



Record 

1 



Word 



1 



Tv£e 



Item 



2-i+l 

i+2-i+,i+l 

i+j+2-i+j+k+l 

i+j+k+2 



tieader record 

Element type 

ECT section 

EPT section 1 

BGPDT section | 

Element temperature ^ 


1 repeated 
' for 
each 
I element 


\ repeated 
/ for 
V each 
t element 

; type 



n+1 



End-of-file 



Notes 



1. i = number of words in ECT section, 
j = number of words in EPT section. 

k = number of words in BGPDT section. 

2. The number of records in the EST corresponds to the number of separate element types in 
the model . 

3. The EST ii generated in subroutine TAIA. 



Summary of EST Formats 







ECT Section 


EPT Section 


BGPDT Section 


Element 


Total 
Words 


Element 




hu{iiber 


number 


Number 


Temper- 


Per 


Tvoe 


Mnemonic 


of Words 


of Words 


of Words 


ature 


Element 


1 


n!?r 


3 


D 


8 


Yes 


17 


2 


BEAfI 


19 


19 


8 


Yes 


47 


3 


TIBE 


3 


4 


8 


Yes 


16 


4 


SHEAR 


5 


3 


16 


Yes 


25 


5 


TWIST 


5 


3 


16 


Yes 


25 


6 


TRIAl 


5 


9 


12 


Yes 


27 


7 


TRBSC 


5 


7 


12 


Yes 


25 


8 


TRPLT 


5 


7 


12 


Yes 


25 


9 


TRHEM 


5 


3 


12 


Yes 


21 


10 


cdrndd 


8 





8 


Yes 


17 


11 


ELASl 


5 


3 





No 


8 


12 


ELAS2 


8 








No 


8 


13 


ELAS3 


3 


3 





No 


6 


14 


ELAS4 


4 








No 


4 


15 


QDPLT 


6 


7 


16 


Yes 


30 


16 


QDMEH 


6 


3 


16 


Yes 


26 


17 


TRIA2 


5 


3 


12 


Yes 


21 



2.3-45 (12-1-69) 



DATA BLOCK AND TABLE DESCRIPTIONS 



ECT Section EPT Section BGPDT Section 















Total 












Element 


Words 


Element 




Number 


Number 


Number 


Temper- 


Per 


Type 


Mnemonic 


of Words 


of Words 


of Words 


ature 


Element 


18 


QUAD2 


6 


3 


16 


Yes 


26 


19 


QUADl 


6 


9 


16 


Yes 


32 


20 


DAMPl 


5 


1 





No 


6 


21 


DAMP2 


6 








No 


6 


22 


DAMP3 


3 


1 





No 


4 


23 


DAMP4 


4 








No 


4 


24 


Vise 


3 


2 


8 


Yes 


14 


25 


MASSl 


5 


1 





No 


6 


26 


riA5S2 


6 








No 


6 


27 


MASS 3 


3 


1 





No 


4 


28 


MASS4 


4 








No 


4 


29 


C0NM1 


24 





4 


Yes 


29 


30 


C0NM2 


13 





4 


Yes 


18 


31 


PL0TEL 


3 





8 


Yes 


12 


32 


REACT 


19 





4 


Yes 


24 


33 


QUAD3 


7 


1 


16 


Yes 


24 


34 


BAR 


15 


18 


8 


Yes 


42 


35 


CONEAX 


3 


23 


3 


Yes 


35 


36 


TRIARG 


6 





12 


Yes 


19 


37 


TRAPRG 


7 





16 


Yes 


24 


38 


T0RDRG 


6 


3 


2 


Yes 


18 


Detailed EST 


Formats 













ECT section for element type = 2: 



Word 

1 

2-3 
4-6 
7 
8-9 

10-12 

13-15 
16-19 



Type 

I 
I 
R 
I 
I 



Item 



Element ID 

SIL numbers for grid points 1, 2 
X, y, z (orientation vector) 
Coordinate system ID for x, y, z 

Pa. Pb 

1 2 3 



h' h' h 



g . g . g 

2 3') 



ECT Section for element type = 1, 3, 24, 31: 

Word Type Item 



1 
2-3 



Element ID 

SIL numbers for grid points 1, 2 



ECT section for element type = 4, 5: 
Word Type 



Item 



1 
2-5 



Element ID 

SIL numbers for grid points 1, 2, 3, 4 



2.3-46 



DATA BLOCK DESCRIPTIONS 

EOT section for element type = 6, 7, 8, 9, 17: 

Word Type Item 

1 I Element ID 

2-4 I SIL numbers for grid points 1 , 2, 3 

5 Re (degrees) 

EOT section for element type = 15, 16, 18, 19: 

Word Type Item 

1 I Element ID 

2-5 I SIL numbers for grid points 1, 2, 3, 4 

6 Re (degrees) 

ECT section for element type = 10: 

Word Type Item 

1 I Element ID 

2-3 I SIL numbers for grid points 1, 2 

4 I Material ID 

5 R A 

6 R J 

7 R C 

8 R non-structural mass (nsm) 

ECT section for element type = 11, 20, 25: 

Word Type Item 

Element ID 

SIL numbers for grid points 1, 2 

Component codes for grid points 1, 2 

ECT section for element type = 12: 

Word Type Item 

1 I Element ID 

2 R Value 

3-4 I SIL numbers for grid points 1, 2 

5-6 I Component codes for grid points 1, 2 

7-8 R gg, S 

ECT section for element type = 13, 22, 27: 

Word Type Item 

1 I Element ID 

2-3 I SIL numbers for scalar points 1, 2 

ECT section for element type = 14, 23, 28: 

Word Type Item 

1 I Element ID 

2 R Value 

3-4 I SIL numbers for scalar points 1, 2 



1 


I 


2-3 


I 


4-5 


I 



2.3-47 



DATA BLOCK AND TABLE DESCRIPTIONS 



ECT section for element type = 21, 26: 
Word Type Item 

1 I Element ID 

2 R Value 

3-4 I SIL numbers for grid points 1, 2 

5-5 I Component codes for grid points 1, 2 

ECT section for element type = 29: 

Word Type Item 

1 I Element ID 

2 I SIL number for grid point 

3 I Coordinate system ID 

4-24 R m , m^ , m^^, m , etc., (6x6 symmetric matrix) 

ECT section for element type = 30: 

Word Type Item 



1 


I 


Element ID 


2 


I 


SIL number for grid point 


3 


I 


Coordinate system ID 


4 


R 


m 


5-7 


R 


X , X , X 

l' 2* 3 


8-13 


R 


^l' ^21* ^22* ^31* ^32' 



ECT section for element type = 34: 

Word Type Item 

1 I Element ID 

2-3 I SIL values for grid points 1, 2 

4-6 R X^, X,. X3 

Coordinate system ID for Xj, X^, X3 



7 I 



8-9 I P^. P^ 

ECT section for element type = 35: 

Word Type Item 

1 I Element ID 

2-3 I SIL values for rings 1, 2 



2.3-48 



DATA BLOCK DESCRIPTIONS 

ECT section for element type = 36: 

Word Type Item 

1 I Element ID 

2-4 I SIL values for grid points 1, 2, 3 

5 R 6 (degrees) 

6 I Material ID 

ECT section for element type = 37: 

Word Type Item 

1 I Element ID 

2-5 I SIL values for grid points 1, 2, 3, 4 

6 Re (degrees) 

7 I Material ID 

ECT section for element type = 38: 

Word Type Item 

1 I Element ID 

2-3 I SIL values for grid points 1, 2 

4-5 R A , A 

1 ' 2 

6 Not defined 

EPT section for element type = 1: 
Word Type Item 



1. 


I 


Material ID 


2 


R 


A 


3 


R 


J 


4 


R 


C 


5 


R 


nsm 



EPT section for element type = 2: 

Word Type Item 

1 I Material ID 

2 R A 

3-4 R Ii, I2 

5 R J 

6 R nsm 

7 I Force Element Code (FE) 
8*9 R Ci f C2 

10-11 R Di, D2 

12-13 R El. Ez 

14-15 R F,. F, 

16-17 R Ki, K2 

18 R I12 

19 not defined 



2.3-49 



DATA BLOCK AND TABLE DESCRIPTIONS 



EPT section for element type = 3: 

Word Type Item 



1 


I 


Material ID 


2 


R 


CD. 


3 


R 


t 


4 


R 


nsm 



EPT section for element type = 4, 5, 9, 16, 17, 18: 
Word Type Item 

1 I Material ID 

2 R t 

3 R nsm 

EPT section for element type = 6, 19: 
Word Type Item 

1 I Material ID for membrane 

2 R t^ 

3 I Material ID for bending 

4 R I 

5 I Material ID for transverse shear 

6 R tj 

7 R nsm 
8-9 R Z,, Z^ 

EPT section for element type * 7, 8, 15: 
Word Type Item 

1 I Material ID for bending 

2 R I 

3 I Material ID for transverse shear 

4 R tz 

5 R nsm 
6-7 R l-i. I2 

EPT section for element type = 11, 13: 
Word Type Item 

1 R K 

2 R g^ 

3 R s 

EPT section for element type = 20, 22: 
Word Type Item 

1 R B„ 



2.3-50 



DATA BLOCK DESCRIPTIONS 

EPT section for element type = 24: 

Word Type Item 

1 R C^ 

2 R Cg 

EPT section for element type = 25, 27: 

Word Type Item 

1 R M„ 

e 

EPT section for element type = 33: 

Word Type Item 

1 I Super element property ID 

EPT section for element type = 34: 

Word Type Item 









1 

2 
3-4 


I 
R 
R 


Material ID 
A 


5 
6 
7 
8-9 


R 
R 

I 
R 


J 

nsm 

FE (Force Method only) 

Ci. c, 


10-11 


R 


D,. D^ 


12-13 


R 


Ei. E, 


14-15 


R 


F,. F, 


16-17 


R 


Ki. K, 


18 


R 


I., 



EPT section for element type = 35: 

Word Type Item 

1 I Material ID for membrane 

2R R Tj 

3 I 

4 R 

5 I 

6 R 

7 R 
8-9 R 

10-23 R 



Material 

I 
Material 


ID 


for 


bending 




ID 


for 


transverse 


shear 


nsm 
Zi. Za 

*i. i = 1 


1. ■ 


14 







2.3-51 



DATA BLOCK AND TABLE DESCRIPTIONS 



EPT section for element type = 38: 
Word Type Item 

1 I Material ID 

2 R TM 

3 R TF 



Table Trailer 



Word 1 = number of elements in model, 
Word 2-6 = are undefined. 



2.3-52 



DATA BLOCK DESCRIPTIONS 



2.3.8.2 GEI (TABLE) 

Description 

General Element Input. 

The GEI contains one logical record for each general element in the model 

Table Format 

Record Word Type Item 



Header record 

ID for general element 

n = number of elements in Uj list 

m = number of elements in Up. list 



SIL value for first U 



3+n 
4+n 

3+n-Hn 
4+n+m 

3+n-Hii+n' 
4+n+m+n' 



3+n+m+n ' 
+nm 



SIL value for n^"^ Uj 
SIL value for first Ur 



SIL value for m^*^ U, 



Elements of Z matrix 



Elements of S matrix 



Same format as record 1 



not present 
if m = 



k 
k+1 



Same format as record 1 
End-of-file 



Table Trailer 

Word 1 = number of general elements in the model. 
Words 2-6 = zero. 

2.3.8.3 ECPT (TABLE) 

Description 

Element Connection and Properties Table. 

The ECPT is essentially the EST 1n a different sort. The ECPT contains one logical record 
for each grid or scalar point of the model. Each logical record contains Element Summary Table 
data for each element connected to the grid or scalar point. 



2.3-53 



DATA BLOCK AND TABLE DESCRIPTIONS 



Table Format 
Record 



Word 



Item 



n+1 



Header record 

1 SIL number for "pivot" grid \ repeated 

or scalar point (integer) j for 

2 Element type \ repeated for I each 
3-i+2 ECT section /each element > grid or 

i+3-i+j+2 EPT section \ connected I scalar 

i+j+3-i+j+k+2 BGPDT section ( to the 1 in the 

i+j+k+3 Element temperature ) pivot ^ model 

End-of-file 



Notes 



1. Detailed formats are given in the EST writeup (see section 2.3,8.1). 

2. If no elements are connected to a grid or scalar point, the record contains only 
one word. 



Table Tra 


liler 






Word 


1 


= 7 




Word 


2-6 = 


are undefined 


2.3.8.4 


GPCT (TABLE) 




Description 






Grid 


Point 


Connection 


Table 



The GPCT is a condensation of the ECPT. It contains one logical record for each grid or 
scalar point of the model. Each logical record contains a list of all grid or scalar 
points that are connected (by means of structural elements) to the pivot grid or scalar 
point. 

Table Format 



Record 

1 



n+1 



Word Item 

Header record 

1 ± SIL number for pivot grid 

or scalar point (integer) 

2 m = number of connected 

points (integer) 
3-2+m Sorted list of SIL numbers 
of connected points 

End-of-file 



repeated for each 
grid or scalar 
in the model 



Notes 



1. If the SIL number for the pivot (first word)<0, then the pivot is a scalar point. 

2. If no elements are connected to the pivot (and therefore no other grid or scalar 
points), the record contains only one word. 



2.3-54 (12-1-69) 



DATA BLOCK DESCRIPTIONS 



Table Trailer 

Word 1 = 7 

Word 2-6 = are undefined 



2.3-55 



DATA 6L0CK AND TABLE DESCRIPTIONS 



2.3.9 Data Blocks Output From Module SMA1 

2.3.9.1 KGGX (MATRIX) 
Description 

[k'^ ] - Partition of stiffness matrix exclusive of qeneral elements - n set. 
gg 

Matrix Trailer 

Number of columns = q 

Number of rows = q 

Form = symmetric 

Type = real double precision 

2.3.9.2 K4GG (MATRIX) 
Description 

TK^ ] - Partition of structural damping matrix - q set. 

gg 

Watrix Trailer 

Number of columns = n 

Number of rows = n 

Form = symmetric 

Type = real double precision 

2.3.9.3 GPST (TABLE) 
Description 

Grid Point Singularity Table 
Table Format 



Record 

1 



Word 



Item 



Header record 



Order of singularity (1, 2, or 3) 

tj = number of SIL numbers that follow 

SIL, 

sil; 



Hereated for each 
sinqularity 



2+N 



End-of-file 



Note 



All entries are integers. 



2.3-56 



DATA BLOCK DESCRIPTIONS 



Table Trailer 




Word 1 - 


undefined 


Word 2 = 





Word 3 = 


1 


Word 4 = 


2 


Word 5 = 


1 


Word 6 = 






2.3-57 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.10 Data Blocks Output From Module SHA2 

2.3.10.1 MGG (MATRIX) 

Description 

fM ] - Partition of mass matrix - g set. 
«■ gg 

Matrix Trailer 

Number of columns = g 

Number of rows = g 

Form = symmetric 

Type = real double precision 

2.3.10.2 BGG (MATRIX) 
Description 

[B ] - Partition of damping matrix - g set. 

Matrix Trailer 

Number of columns = g 

Number of rows = g 

Form = symmetric 

Type = real double precision 



2.3-58 



DATA BLOCK DESCRIPTIONS 



2.3.11 Data Blocks Output From Module GPWG . 

2.3.11.1 0GPWG (TABLE) 

Description 

Grid Point Weight Generator Uutput Table. 
Table Format 



Record 


Word 


Type 


Item 









Header record 


1 


1 
2 
3 

4-9 
10 

n-50 
51-146 


I 
I 
I 

I 
B 


0FP ID record 

1 

13 

External ID of grid point about which moments 

and interias were calculated. If External ID 

the basic origin was used. 

Not defined. 

98 

Not defined. 

96 words of title, subtitle, and label from 

/0UTPUT/ 


2 


1-36 
37-45 
46-49 
50-53 
54-57 
58-66 
67-69 
70-78 


R 
R 
R 
R 
R 
R 
R 
R 


f)FP data record 
|M0] 6x6 moment matrix 
]S] 3x3 matrix 
Mx, Xx, Yx, Zx 
»y. Xy, Yy, Zy 
Mz, Xz, Yz, Zz 
Inertia matrix (3x3) 
Principal inertias 
Q matrix (3x3) 


3 






End-of-file 


Table Trailer 








Word 1 = 








Word 2 = nonzero 


. 






Words 3-6 = 









2.3-59 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.12 Data Blocks Output From Module SHA3 

2.3.12.1 KGG (MATRIX) 
Description 

[K ] - Partition of stiffness matrix - g set. Contains contributions from all elements 
^^ in the model, including general elements. 

Matrix Trailer 

Number of columns = g 

Number of rows = g 

Form = symmetric 

Type = real double precision 

2.3.12.2 KGGL (MATRIX) 
Description 

[K^ ] - Partition of the stiffness matrix of linear elements - g set. Contains contribu- 
99 tions from all linear elements of the model including general elements. Used only 
in Piecewise Linear Analysis. 

Matrix Trailer 

Number of columns = g 

Number of rows = g 

Form = symmetric 

Type = real double precision 



2.3-60 



DATA BLOCK DESCRIPTIONS 

2.3.13 Data Blocks Output From Module GP4 

2.3.13.1 RG (MATRIX) 

Description 

[R ] - Multipoint constraint equations matrix. 

Matrix Header 

Number of columns = g 

Number of rows = m 

Form = rectangular 

Type = real single precision 

2.3.13.2 YS (MATRIX) 

Description 

{Y^} - Constrained displacement vector - s set. 

Matrix Trailer 

Number of columns = 1 

Number of rows = s 

Form = rectangular 

Type = real single precision 

2.3.13.3 USET (TABLE) 

Description 

Displacement set definitions table. 

USET contains one logical record. Each word corresponds to each degree of freedom in the 
g-displacement set (in internal order) and contains ones in specified bit positions indicat- 
ing the displacement sets to which the degree of freedom belongs. 



Table Format 








Record 


Word 


Type 


Item 





1-2 

3 

4 


B 
I 

I 


Data block name 
SPC set ID 
MPC set ID 



Mask for first degree of freedom 

Mask for n degree of freedom 
End-of-file 



2.3-61 



DATA BLOCK AND TABLE DESCRIPTIONS 



Notes 



1, Bit positions for the various displacement sets are defined as follows: 



22 23 24 25 26 27 28 29 30 31 32 



Table Trailer 



Word 1 = zero. 

Word 2 = degrees of freedom in the g-displacement set (LUSET). 

Word 3 = zero. 

Word 4 = logical "or" of all USET masks. 

Word 5 = zero. 

Word 6 = zero. 



2.3-62 



DATA BLOCK DESCRIPTIONS 



2.3.14 Data Blocks Output From Module GPSP . 

2.3.14.1 0GPST (TABLE) 

Description 

Unremoved Grid Point Singularities. 
Table Format 



Record 


Word 


Type 


Item 









Header record 


1 


1 

2 

3-9 
10 

11-50 
51-146 


I 

I 

I 
B 


flFP ID record 



8 

Not defined 

12 

Not defined 

96 words of title, subtitle, and label 

/0UTPUT/ 


2 


1 
2 
3 

4-6 

7-9 

10-12 




eiFP data record 

External grid point ID 

Scalar point flag 

Singularity order 

Strongest singularity components 

Next strongest singularity components 

Weakest sinaularitv comoonents 



from 



*Note: The above 12 words are repeated in record 2 for each grid point 
with an unremoved singularity. 

End-of-file 



Table Trailer 



Word 1 
Word 2-6 



2.3-63 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3,15 Data Blocks Output From Module MCE1 

2.3.15.1 GM (MATRIX) 
Description 

[G ] - Multipoint constraint transformation matrix - m set. 

Matrix Header 

Number of columns = n 

Number of rows = m 

Form = rectangular 

Type = real double precision 



2.3-64 



DATA BLOCK DESCRIPTIONS 

2.3.16 Data Blocks Output From Module MCE2 

2.3.16.1 KNN (MATRIX) 

Description 

[K^^] - Partition of stiffness matrix - n set. 

Matrix Trailer 



Number of columns = n 

Number of rows = n 

Form = symmetric 

Type = real double precision 



2.3.16.2 MNN (MATRIX) 



Description 

[M^^] - Partition of mass matrix - n set. 

Matrix Trailer 

Number of columns = n 

Number of rows = n 

Form = symmetric 

Type = real double precision 



2.3.16.3 KDNN (MATRIX) 
Description 

[K^p] - Partition of differential stiffness matrix - n set. 

Matrix Trailer 

Number of columns = n 

Number of rows = n 

Form = symmetric 

Type = real double precision 



2.3-65 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.16.4 BNN (MATRIX) 



Description 

[B 1 - Partition of damping matrix - n set. 
■- nn-' 

Matrix Trailer 



Number of columns = n 

Number of rows = n 

Form = symmetric 

Type = real double precision 



2.3.16.5 K4NN (MATRIX) 

Description 

4 
[K 1 - Partition of the structural damping matrix - n set. 
^ nn-" 

Matrix Trailer 

Number of columns = n 

Number of rows = n 

Form = symmetric 

Type = real double precision 



2.3-66 



DATA BLOCK DESCRIPTIONS 

2.3.17 Data plocks Output From I'rdule SCtl 

2.3.17.1 KFF (MATRIX) 

Description 

[K^f] - Partition of stiffness matrix after single-point constraints have been removed - 
f set. 

Matrix Trailer 

Number of columns = f 

Number of rows = f 

Form = sytrmetric 

Type = real double precision 

2.3.17.2 KFS (MATRIX) 
Description 

[K, ] - Partition of stiffness matrix after single-point constraints have been removed. 

Matrix Trailer 

Number of columns = s 

Number of rov/s = f 

Form = rectangular 

Type = real double precision 

2.3.17.3 KSS (MATRIX) 

Description 

[K ] - Partition of stiffness matrix after single-point constraints have been removed - 
s set. 

Matrix Traile r 

Number of columns = s 

Number of rows = s 

Form = symmetric 

Type = real double precision 

2.3.17.4 MFF (MATRIX) 
Description 

[M^^] - Partition of mass matrix after single-point constraints have been removed - f set. 

Matrix Trailer 

fJumber of columns = f 

Number of rows = f 

Form = symmetric 

Type = real double precision 



2.3-67 



DATA BLOCK AND TABLE DESCRIPTIOUS 



2.3.17.5 KDFF (MATRIX) 
Description 

[K^f] - Partition of differential stiffness matrix - f set. 

Matrix Trailer 

Number of columns = f 

Number of rows = f 

Form = symmetric 

Type = real double precision 

2.3.17.6 KDFS (MATRIX) 
Description 

[Kx ] - Partition of differential stiffness matrix. 

Matrix Trailer 

Number of columns = s 

Number of rows = f 

Form = rectangular 

Type = real double precision 

2.3.17.7 KDSS (MATRIX) 
Description 

[K** ] - Partition of differential stiffness matrix - s set. 

Matrix Trailer 

Number of columns = s 

Number of rows = s 

Form = synmetric 

Type = real double precision 

2.3.17.8 BFF (MATRIX) 
Description 

[B-x] - Partition of damping matrix after single point constraints heve been removed - f set. 

'latrix Trailer 

liumber of columns = f 

liumber of rows = f 

Form = symmetric 

Tvpe = real double precision 



2.3-68 



DATA BLOCK DESCRIPTIONS 

2.3.17.9 K4FF (MATRIX) 

Description 

[Kx^] - Partition of structural damping matrix with single-point constraints remo 
^^ f set. 

Matrix Trailer 



Number of columns = f 

Number of rows = f 

Form = symmetric 

Type = real double precision 



2.3-69 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.18 Data Blocks Output From Module SMP1 

2.3.18.1 G0 (MATRIX) 

Description 

[G ] - Structural matrix partitioning transformation matrix. 

Matrix Trailer 



Number of columns = a 

Number of rows = o 

Form = rectangular 

Type = real double precision 



2.3.18.2 KAA (MATRIX) 



Description 

[K ] - Partition of stiffness matrix - a set. 
aa 

Matrix Trailer 

Number of columns = a 

Number of rows = a 

Form = symmetric 

Type = real double precision 



2.3.18.3 K00B (MATRIX) 
Description 

n< 1 - Partition of stiffness matrix - o set. 

00 

Matrix Trailer 

Number of columns = o 

Number of rows = o 

Form = symmetric 

Type = real double precision 



2.3.18.4 L00 (MATRIX) 

Description 

[LI- Lower triangular factor of K00B - o set. 
oo-" 

Matrix Trailer 

Number of columns = o 

Number of rows = o 

Form = lower triangular 

Type = real double precision 



2.3-70 



DATA BLOCK DESCRIPTIONS 



2.3.18.5 U00 (MATRIX) 

Description 

[U ] - Upper triangular factor of K00B - o set. 

Matrix Trailer 

Number of columns = o 

Number of rows = o 

Form = upper triangular 

Type = real double precision 

'lote 

This matrix is not a standard upper triangular factor. Its format is acceptable only to 
subroutine FBS. 

2.3.18.6 MAA (MATRIX) 

Description 

[M,,] - Partition of mass matrix - a set. 

Matrix Trailer 

Number of columns = a 

Number of rows = a 

Form = symmetric 

Type = real double precision 

2.3.18.7 M0?IB (MATRIX) 
Description 

[M ] - Partition of mass matrix - o set. 

Matrix Trailer 

Number of columns = o 

Number of rows = o 

Form = symmetric 

Type = real double precision 



2.3-71 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.18.8 M0AB (MATRIX) 
Description 



[M ] - Partition of mass matrix. 

'- oa 

Matrix Trailer 

Number of columns = a 

Number of rows = o 

Form = rectangular 

Type = real double precision 



2.3.18.9 BAA (MATRIX) 



Description 

[B,,] - Partition of damping matrix - a set. 
aa 

Matrix Trailer 

Number of columns = a 

Number of rows = a 

Form = symmetric 

Type = real double precision 



2,3.18.10 K4AA (MATRIX) 
Description 

[K,,] - Partition of structural damping matrix - a set. 

da 

Matrix Trailer 

Number of columns = a 

Number of rows = a 

Form = symmetric 

Type = real double precision 



2.3-72 



DATA BLOCK DESCRIPTIONS 

2.3.19 Data Blocks Output From Module RBMG1 

2.3.19.1 KLL (MATRIX) 

Description 

[K..] - Partition of stiffness matrix - i set. 

Matrix Trailer 

Number of columns = ^ 

Number of rows = ^ 

Form = symmetric 

Type = real double precision 

2.3.19.2 KLR (MATRIX) 

Description 

[K. ] - Partition of stiffness matrix 

Matrix Trailer 

Number of columns = I 

Number of rows = r 

Form = rectangular 

Type = real double precision 



2.3.19.3 KRR (MATRIX) 



Description 

[K 1 - Partition of stiffness matrix - r set. 

Matrix Trailer 

Number of columns = r 

Number of rows = r 

Form = symmetric 

Type = real double precision 



2.3.19.4 MLL (MATRIX) 



Description 

[M.,] - Partition of mass matrix - i set. 

Matrix Trailer 



Number of columns = 2. 

Number of rows = H 

Form = symmetric 

Type = real double precision 



2.3-73 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.19.5 MLR (MATRIX) 



Description 

[M„ ] - Partition of mass matrix. 

Matrix Trailer 

Number of columns = I 

Number of rows = r 

Form = rectangular 

Type = real double precision 



2.3.19.6 MRR (MATRIX) 



Description 

[M ] - Partition of mass matrix - r set. 

Matrix Trailer 

Number of columns = r 

Number of rows = r 

Form = symmetric 

Type = real double precision 



2.3-74 



DATA BLOCK DESCRIPTIONS 

2.3.20 Data Blocks Output From Module RBMG2 

2.3.20.1 LLL (MATRIX) 

Description 

[L„j] - Lower triangular factor of KLL - a set. 

Matrix Trailer 



Number of columns = I 

Number of rows = H 

Form = lower triangular 

Type = real double precision 

2.3.20.2 ULL (MATRIX) 

Description 

[UpJ - Upper triangular factor of KLL - I set. 

Matrix Trailer 

Number of columns = it 

Number of rows = H 

Form = upper triangular 

Type = real double precision 

Note 

This matrix is not a standard upper triangular factor. Its format is acceptable only to 
subroutine FBS. 

2.3.20.3 LBLL (MATRIX) 
Description 

[L^jj^] - Lower triangular factor of KBLL - i set. 

Matrix Trailer 

Number of columns = S- 

Number of rows = I 

Form = lower triangular 

Type = real double precision 



2,3-75 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.20,4 UBLL (MATRIX) 
Description 

[U.jj^] - Upper triangular factor of KBLL - I set. 

Matrix Trailer 

Number of columns = i 

Number of rows = i 

Form = upper triangular 

Type = real double precision 

Note 

This matrix is not a standard upper triangular factor. Its format is acceptable only to 
subroutine F3S. 



2.3-76 



DATA BLOCK DESCRIPTIONS 



2.3.21 Data Blocks Output From Module RBMG3 

2.3.21.1 DM (MATRIX) 
Description 

[D] - Rigid body transformation matrix. 

Matrix Trailer 

Number of columns = i 

Number of rows = r 

Form = rectangular 

Type = real double precision 



2.3-77 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.22 Data Blocks Output From Module RBMG4 

2.3.22.1 MR (MATRIX) 
Description 

[m ] - Rigid body mass matrix - r set. 

Matrix Trailer 

Number of columns * r 

Number of rows = r 

Form = symmetric 

Type = real double precision 



2.3-78 



DATA BLOCK DESCRIPTIONS 

2.3.23 Data Blocks Output From Module SSG1 . 

2.3.23.1 PG (MATRIX) 
Description 

[P ] - Static load vector matrix giving static loads - g set. 
Matrix Trailer 

Number of columns = number of subcases 

Number of rows = g 

Form = rectangular 

Type = real single precision 

2.3.23.2 PGl (MATRIX) 

Description 

[P ] - Static load vector giving static loads for Piecewise Linear Analysis problem 
^ g set. 

Matrix Trailer 

Number of columns = 1 

Number of rows = g 

Form = rectangular 

Type = real single precision 



2.3-79 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.24 Data Blocks Output From Module SSG2 

2.3.24.1 QR (MATRIX) 
Description 

[q^] - Determinate support forces matrix - r set. 

Matrix Trailer 

Number of columns = number of subcases 

Number of rows = r 

Form = rectangular 

Type = real single precision 

2.3.24.2 P9 (MATRIX) 
Description 

[Pq] - Partition of the load vector matrix giving loads due to static force - o set. 

Matrix Trailer 

Number of columns = number of subcases 

Number of rows = o 

Form = rectangular 

Type = real single precision 

2.3.24.3 PS (MATRIX) 
Description 

[Pj] - Partition of load vector matrix giving loads in s set. 

Matrix Trailer 

Number of columns = number of subcases 

Number of rows = s 

Form = rectangular 

Type = real single precision 

2.3.24.4 PL (MATRIX) 
Description 

[Pj^] - Partition of the load vector matrix giving static loads on I set. 

Matrix Trailer 

Number of columns = number of subcases 

Number of rows = Jl 

Form = rectangular 

Type = real single precision 



2.3-80 



DATA BLOCK DESCRIPTIONS 

2.3.25 Data Blocks Output From Module SSG3 

2.3.25.1 ULV (MATRIX) 

Description 

[u.] - Partition of the displacement vector matrix giving displacements - I set. 

Matrix Trailer 



Number of columns = number of subcases 

Number of rows = ^ 

Form = rectangular 

Type = real double precision 

2.3.25.2 U0(3V (MATRIX) 
Description 

[u°] - Partition of the displacement vector matrix giving displacements in the o set. 

Matrix Trailer 

Number of columns = number of subcases 

I'Jumber of rows = o 

Form = rectangular 

Type = real double precision 



2.3.25.3 RULV (MATRIX) 



Description 

[6P ] - Residual vector matrix for the it set. 



Matrix Trailer 

Number of columns = number of subcases 

Number of rows = I 

Form = rectangular 

Type = real single precision 



2.3.25.4 RU0V (MATRIX) 



Description 

{5P } - Residual vector matrix for the o set. 



Matrix Trailer 

Number of columns = number of subcases 

Number of rows = o 

Form = rectangular 

Type = real single precision 



2.3-81 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.25.5 UBLV (MATRIX) 
Description 

[u.] - Partition of the differential stiffness displacement vector - Jl set. 

Matrix Trailer 

Number of columns = 1 

Number of rows = l 

Form = rectangular 

Type = real double precision 

2.3.25.6 RUBLV (MATRIX) 
Description 

[6P.] - Differential stiffness residual vector - i set. 

Matrix Trailer 

Number of columns = 1 

Number of rows = l 

Form = rectangular 

Type = real single precision 



2.3-82 



DATA BLOCK DESCRIPTIONS 

2.3.26 Data Blocks Output From Module SSG4 . 

2.3.26.1 PLI (MATRIX) 

Description 

[pj] - Partition of load vector for inertia relief matrix giving loads due to static + 
inertial forces on I set. 

Matrix Trailer 

Number of columns = number of subcases 

Number of rows = I 

Form = rectangular 

Type = real single precision 

2.3.26.2 P(3I (MATRIX) 

Description 

[P^] - Partition of load vector for inertia relief matrix giving loads due to inertial 
° force + static forces on o set. 

Matrix Trailer 

Number of columns = number of subcases 

Number of rows = o 

Form = rectangular 

Type = real single precision 



2.3-83 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3,27 Data Blocks Output From Module SDR1 

2.3,27.1 UGV (MATRIX) 

Description 

[u ] - Displacement vector matrix giving displacements in the g set. 

Matrix Trailer 



Number of columns = number of subcases in CASECC 

Number of rows = g 

Form = rectangular 

Type = real single precision 



2.3.27.2 PGG (MATRIX) 



Description 

[P ] - Static load vector appended to include all boundary conditions - g set. 

Matrix Trailer 

Number of columns = number of subcases in CASECC 

Number of rows = g 

Form = rectangular 

Type = real single precision 

2.3.27.3 QG (MATRIX) 

Description 

[Pg] - Single-point constraint forces and determinate support forces matrix - q set. 

Matrix Trailer 

Number of columns = number of subcases in CASECC 

Number of rows = g 

Form = rectangular 

Type = real single precision 

2.3.27.4 PHIG (MATRIX) 

Description 

[* ] - Eigenvector matrix giving eigenvectors (displacements) in the g set. 

Matrix Trailer 

Number of columns = number of eigenvalues found in READ 

Number of rows = g 

Form = rectangular 

Type = real single precision 



2.3-84 



DATA BLOCK DESCRIPTIONS 



2.3.27.5 UBGV (MATRIX) 

Description 

[u ] - Displacement vector matrix for differential stiffness giving displacements 
^ in the g set. 

Matrix Trailer 

Number of columns = number of factors on a DSFACT bulk data card 

Number of rows = g 

Form = rectangular 

Type = real single precision 

2.3.27.6 QBG (MATRIX) 
Description 

[q ] - Single-point forces of constraint matrix for differential stiffness - g set. 

Matrix Trailer 

Number of columns = number of factors on a DSFACT bulk data card 

Number of rows = g 

Form = rectangular 

Type = real single precision 

2.3.27.7 BQG (MATRIX) 
Description 

[q ] - Single-point forces of constraint matrix for a buckling analysis problem - g set. 

Matrix Trailer 

Number of columns = number of buckling modes found in READ 

Number of rows = g 

Form = rectangular 

Type = real single precision 

2.3.27.8 DELTAU6V (MATRIX) 

Description 

{(5u } - Incremental displacement vector in piecewise linear analysis - g set. 

Matrix Trailer 

Number of columns = 1 

Number of rows = g 

Form = rectangular 

Type = real single precision 



2.3-85 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.27.9 DELTAPG (MATRIX) 

Description 

{6P } - Incremental load vector in piecewise linear analysis - g set. 

Matrix Trailer 

Number of columns = 1 

Number of rows = g 

Form = rectangular 

Type = real single precision 

2.3.27.10 DELTAQG (MATRIX) 

Description 

{6q } - Incremental vector of single-point forces of constraint in piecewise linear. 
^ analysis - g set. 

Matrix Trailer 

Number of columns = 1 

Number of rows = g 

Form = rectangular 

Type = real single precision 



2.3.27.11 CPHIP (MATRIX) 
Description 



[* ] - Complex eigenvectors in p set. 



Matrix Trailer 



Number of columns = number of eigenvalues found in CEAD 

Number of rows = p 

Form = . rectangular 

Type = complex single precision 



2,3.27.12 QPC (MATRIX) 
Description 

[flp] - Complex single-point forces of constraint - p set. 

Matrix Trailer 

Number of columns = number of eigenvalues found in CEAD 

Number of rows = p 

Form = rectangular 

Type = complex single precision 



2.3-86 



DATA BLOCK DESCRIPTIONS 



2.3.27.13 UPVC (MATRIX) 
Description 

[Uq] - Frequency response solution vectors - p set. 

Matrix Trailer 

Number of columns = the product of the number of frequencies and number of loads 

Number of rows = p 

Form = rectangular 

Type = complex single precision 

2.3.27.14 UPV (MATRIX) 

Description 

[u ] - Transient solution vectors - p set. 

Matrix Trailer 

Number of columns = the number of output times multiplied by 3 

Number of rows = p 

Form = rectangular 

Type = real single precision 

2.3.27.15 QP (MATRIX) 

Description 

[Qp] - Transient single-point forces of constraint - p set. 

Matrix Trailer 

Number of columns = the number of output times multiplied by 3. 

Number of rows = p 

Form = rectangular 

Type = real single precision 



2.3-87 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.28 Data Blocks Output From Module SDR2 . 

2.3.28.1 filUGVl (TABLE) 

Description 

Output displacement vector requests (g set, S0RT1, real). 
Table Format 



Record 


1 



Word 



1 

2 

3 

4 

5 

6 

7 

8 

9 
10 

11-50 

51-82 

83-114 

115-146 



li^e 



1 
2 
3-8 



Item 

Header record 

Device code + 10*approach code 

1 



Subcase number 

Load set ID 







Format code 

Number of words per entry in next record = 8 

Not defined 

Title 

Subtitle 

Label 

10*point ID + device code ) reoeat 

Poi nt type } for each 

R(T1), R(T2), R(T3), R{R1), R(R2), R(R3)) point 



Notes 



1 . Records 1 and 2 are repeated for each vector to be output 



Device code = 

Format code = 
Approach code 

Point type 



fO = X y output only 

)1 = print 

14 = punch 

^5 = print and punch 

fl = real 

,2 = real /imaginary 

[3 = magnitude/phase 

1. 3, 7, or 10 

'l = grid point 

1 2 = scalar point 

13 = extra point 
,4 = modal point 



Table Trailer 



Words 1-6 contain no significant values. 



2,3-88 



DATA BLOCK DESCRIPTIONS 

2.3.28,2 «)UBGV1 (TABLE) 
Description 

Output displacement vector requests (g set, S0RT1 , real) 
Table Format 



Record 


Word 


Type 


Item 









Header record 


1 


1 




Device code + 10*aDDroach code 




2 




1 




3 









4 




Subcase number 




5 




Load set ID 




6 









7 









8 









9 




Format code 




10 




Number of words per entry in next record = 8 




11-50 




Not defined 




51-82 


B 


Title 




83-114 


B 


Subtitle 




115-146 


B 


Label 


2 


1 


I 


10*point ID + device code ] repeat 




2 


I 


Point type >for each 




3-8 


R 


R{T1), R(T2). R(T3). R(R1), R(R2), R(R3))point 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 



2. Device code = 



Format code = 



fo = X y output only 

)l = print 

|4 = punch 

's = print and punch 

p = real 

Iz = real /imaginary 

(3 = magnitude/phase 



4. Approach code = 4 



5. Point type 



fl = grid point 

)2 = scalar point 

j3 = extra point 

'4 = modal point 



Table Trailer 



Words 1-6 contain no significant values. 



2.3-89 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.28.3 giUPVl (TABLE) 
Description 

Output displacement vector requests (p set, S0RT1 , real). 
Table Format 



Record 


Word 


Type 


Item 











Header record 


1 


1 




I 


Device code + 10*approach code 
( 1 = Displacement 




2 




I 


<10 = Velocity 
(ll = Acceleration 




3 




I 







4 




I 


Subcase number 




5 




R 


Time 




6 




I 







7 




I 







8 




I 


Load set ID 




9 




I 


Format code 




10 




I 


Number of words per entry in next record = 8 




11- 


50 




Not defined 




51- 


82 


B 


Title 




83- 


114 


B 


Subtitle 




115- 


■146 


B 


Label 


2 


1 




I 


10*point ID + device code ] repeat 




2 




I 


Point type >for eai 




3- 


•8 


R 


R(T1), R(T2), R(T3). R(Rl), R(R2), R(R3))point 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 



2. Device code = 

3. Format code = 

4. Approach code 

5. Point type 



fO = X y output only 

)l = print 

j4 = punch 

(5 = print and punch 

(1 = real 

(2 = real /imaginary 

(3 = magnitude/phase 



ll = grid point 

;2 = scalar point 

i3 = extra point 

(4 = modal point 



Table Trailer 



Words 1-6 contain no significant values. 



2.3-90 



DATA BLOCK DESCRIPTIONS 

2.3.28.4 0UPVC1 (TABLE). 
Description 

Output displacement vector requests (p set, S0RT1 , complex), 
Table Format 



Record 



Word 



Type 



Item 



3 

4 

5 

6 

7 

8 

9 
10 

n-50 

51-82 

83-114 

115-145 

1 
2 

3-8 
9-14 



Header record 



Device code + 10*approach code 
'1001 = Displacement 

1010 = Velocity 

1011 = Acceleration 


Subcase number 

Frequency 





Load set ID 

Format code 

Number of words per entry in next record = 14 

Not defined 

Title 

Subtitle 

Label 



10*point ID + device code ) repeat 

Point type (for 

R(T1), R(T2), R(T3), R(R1), R(R2), R(R3)reach 

I(T1). I(T2), I(T3), I(R1), I(R2), I(R3))point 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 



2. Device code 



Format code = 



4. Approach code 



5. Point type 



lO = X y output only 

)l = print 

U = punch 

(,5 = print and punch 

(1 = real 

<2 = real/imaginary 

(3 = magnitude/phase 



n = grid point 

)2 = scalar point 

J3 = extra point 

'4 = modal point 



Table Trailer 



Words 1-6 contain no significant values. 



2.3-91 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.28.5 0PG1 (TABLE) . 
Description 

Output load vector requests (g set, S0RT1 , real) 



Table Format 








Record 


Word 


Type 


Item 









Header record 


1 


1 




Device code + 10*aDproach code 




2 




2 




3 









4 




Subcase number 




5 




Load set ID 




6 









7 









8 









9 




Format code 




10 




Number of words per entry in next record = 8 




11-50 




Not defined 




51-82 


B 


Title 




83-114 


B 


Subtitle 




115-146 


B 


Label 


2 


1 


I 


10*point ID + device code ^Repeat 




2 


I 


Point type >for each 




3-8 


R 


R(T1), R(T2), R{T3). R(R1), R(R2), R(R3))point 



Notes 



1. Records 1 and 2 are repeated for each vector to be cutout. 

2. Device code = 



!0 = X y output only 
1 = print 
4 = punch 
5 = print and punch 



3. Format code = 



(1 = real 

\2 = real /imaginary 

(3 = magnitude/phase 



4. Approach code = 1, 3, 7, or 10 

5. Point type 



1 = grid point 

2 = scalar point 

3 = extra point 

4 = modal point 



Table Trailer 



Words 1-6 contain no significant values. 



2.3-92 



DATA BLOCK DESCRIPTIONS 

2.3.28.6 0PP1 (TABLE). 
Description 

Output load vector requests (p set, S(3RT1 , real). 
Table Format 



Record 

1 



Notes 



Word 



1 

2 

3 

4 

5 

6 

7 

8 

9 
10 

11-50 

51-82 

83-114 

115-146 



Type 



Item 



1 
2 
3-8 



Header record 

Device code + 10*approach code 

2 



Subcase number 

Time 





Load set ID 

Format code 

Number of words per entry in next record = 8 

Not defined 

Title 

Subtitle 

Label 

10*point ID + device code ) repeat 

Point type I for each 

R(T1). R(T2), R(T3). R(R1), R(R2), R(R3)jpoint 



1. Records 1 and 2 are repeated for each vector to be output. 



2. Device code = 

3. Format code = 

4. Approach code = 

5. Point type = 



(O = X y output only 

jI = print 

J4 = punch 

(.5 = print and punch 

p = real 

<2 = real /imaginary 

(3 = magnitude/phase 



1 = grid point 

12 = scalar point 

13 = extra point 
[4 = modal point 



Table Trailer 



Words 1-6 contain no significant values. 



2.3-93 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.28.7 0PPC1 (TABLE). 
Description 

Output load vector requests (p set, SfJRTl , complex). 
Table Format 



Record 

1 



Word 



1 

2 

3 

4 

5 

6 

7 

8 

9 
10 

11-50 

51-82 

83-114 

115-146 

1 
2 

3-8 
9-14 



Type 



Item 



Header record 



Device code + 10*approach code 

1002 



Subcase number 

Frequency 





Load set ID 

Format code 

Number of words per entry in next record = 14 

Not defined 

Title 

Subtitle 

Label 

10*point ID + device code ^reoeat 

Point type (-For 

R(T1 . R(T2), R(T3), R(R1), R(R2), R(R3)(each 
I(T1), I(T2), I(T3), I(R1), I{R2), I(R3))point 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 



2. Device code = 

3. Format code = 

4. Approach code 

5. Point type 



fO = X y output only 

)1 = print 

j4 = punch 

(.5 = print and punch 

(1 = real 

^2 = real/imaginary 

(3 = magnitude/phase 



h = grid point 

)2 = scalar point 

)3 = extra point 

'4 = modal point 



Table Trailer 



Words 1-6 contain no significant values. 



2.3-94 



DATA BLOCK DESCRIPTIONS 

2.3.28,8 0QG1 (TABLE) 
Description 

Output forces of single-point constraint requests (g set, S0RT1 , real). 
Table Format 



Record 

1 



Notes 



Word 



1 

2 

3 

4 

5 

6 

7 

8 

9 

10 

11-50 

51-82 

83-114 

115-146 

1 
2 
3-8 



Jl21 



Item 



Header record 



Device code + 10*approach code 

3 



Subcase number 

Load set ID 







Format code 

Number of words per entry in next record = 8 

Not defined 

Title 

Subtitle 

Label 

10*point ID + device code )reneat 

Point type Wor each 

R(T1), R(T2). R(T3), R(R1), R(R2), R(R3)inoint 



1. Records 1 and 2 are repeated for each vector to be output. 



Device code = 



Format code 



ro = X y output only 

'l = print 

)4 = punch 

(.5 = print and punch 

(1 = real 

(2 = real /imaginary 

(3 = magnitude/phase 



4. Approach code = 1, 2, 3, 7, or 10 

5. Point type = 



M = grid point 

)2 = scalar point 

)3 = extra point 

U = modal point 



Table Tra i 1 er 



Words 1-6 contain no significant values. 



2.3-95 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.28.9 0QBG1 (TABLE) 
Description 

Output forces of single-point constraint requests (g set, S0RT1 , real). 



Table Format 



Record 



Word 



1 

2 

3 

4 

5 

6 

7 

8 

9 

10 

11-50 

51-82 

83-114 

115-146 

1 
2 
3-8 



Type 



Item 



Header record 



Device code + n*anDroach code 

3 



Subcase number 

Load set ID 







Format code 

Number of words oer entry in next record = 8 

Not defined 

Title 

Subtitle 

Label 

10*point ID + device code | repeat 

Point type Kor each 

R(T1). R(T2), R(T3), R(R1), R(R2), R(R3))point 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 



2. Device code = 

3. Format code = 

4. Approach code = 

5. Point type 



iO = X y output only 

1 = print 

4 = punch 

5 = print and punch 

(1 = real 

<2 = real/imaginary 

(3 = magnitude/phase 



C] = grid point 

12 = scalar point 

J3 = extra point 

(4 = modal point 



Table Trailer 



Words 1-6 contain no significant values. 



2.3-96 



DATA BLOCK DESCRIPTIONS 

2.3,28.10 0BQG1 (TABLE) . 
Description 

Output forces of single-point constraint requests (g set, S0RT1, real). 
Table Format 



Record 


Word 


Type 


Item 









Header record 


1 


1 




Device code + 10*approach code 




2 




3 




3 









4 




Subcase number 




5 




Mode number 




6 




Eigenvalue 




7 









8 









9 




Format code 




10 




Number of words ner entry in next record = 8 




11-50 




Not defined 




51-82 


B 


Title 




83-114 


B 


Subtitle 




115-146 


B 


Label 


2 


1 


I 


10*point ID + device code ) ren 




2 


I 


Point type Wor 




3-8 


R 


R(T1). R(T2). R(T3). R(Rl). R(R2). RfR3) noi 



each 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 



2. Device code = 



3. Format code 



ro = X y output only 

11 = print 

j4 = punch 

(5 = print and punch 

1 = real 

2 = real/imaginary 

3 = magnitude/phase 



4. Approach code = 8 

5. Point type 



1 = grid point 

2 = scalar point 

3 = extra point 

4 = modal point 



Table Trailer 



Words 1-6 contain no significant values. 



2,3-97 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.28.n 0QP1 (TABLE). 
Description 

Output forces of single-point constraint requests (p set, S0RT1 , real). 
Table Format 



Record 


Word 


Type 


Item 









Header record 


1 


1 




Device code + 10*aDnroach code 




2 




3 




3 









4 




Subcase number 




5 




Time 




6 









7 




C 




8 




Load set ID 




9 




Format code 




10 




Number of words per entry in next record = 8 




n-50 




Not defined 




51-82 


B 


Title 




83-114 


B 


Subtitle 




115-146 


B 


Label 


2 


1 


I 


10*point ID + device code ) repeat 




2 


I 


Point type >for each 




3-8 


R 


R(T1), R(T2), R(T3), R(R1), R(R2), R(R3)jpoint 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 

2. Device code = 



!0 = X y output only 
1 = print 
4 = punch 
5 = print and punch 



3. Format code = 

4. Approach code 

5. Point type 



n = real 

<2 = real/imaginary 

(3 = magnitude/ohase 



(] = grid point 

12 = scalar point 

J3 = extra point 

(4 = modal point 



Table Trailer 



Words 1-6 contain no significant values. 



2.3-98 



DATA BLOCK DESCRIPTIONS 

2.3.28.12 0QPC1 (TABLE). 
Description 

Output forces of single-point constraint requests (p set, S0RT1 , complex), 
Table Format 



Record 

1 



Word 



1 

2 

3 

4 

5 

6 

7 

8 

9 
10 

11-50 

51-82 

83-114 

115-146 

1 

2 

3-8 

9-14 



Iffie 



R/I 
/R 
/R 



Item 

Header record 

Device code + 10*approach code 

1003 



Subcase number 

Frequency or mode number 

or eigenvalue (real part) 

or eigenvalue (real part) 

Load set ID 

Format code 

Number of words per entry in next record = 14 

Not defined 

Title 

Subtitle 

Label 

10*point ID + device code )reneat 

Point type (for 

R(T1), R(T2), R(T3). R(R1), R(R2), R(R3)(each 

I(T1), I(T2), I(T3), I(R1), I(R2), I(R3))Doint 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 



Device code 



Format code 



fO = X y output only 

}1 = print 

]4 = punch 

(5 = print and punch 

1 = real 

2 = real /imaginary 
.3 = magnitude/phase 



Approach code = 5, or 9 
Point type = 



1 = grid point 

2 = scalar point 

3 = extra point 

4 = modal point 



Table Trailer 



Words 1-6 contain no significant values. 



2.3-99 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.28.13 0PHIG (TABLE). 
Description 

Output eigenvector requests (g set, S(?RT1 , real), 
Table Format 



Record 

1 



Word 



1 

2 

3 

4 

5 

6 

7 

8 

9 
10 

n-50 

51-82 

83-114 

115-146 

1 
2 
3-8 



Tj^ 



Item 



B 
B 
B 

I 
I 
R 



Header record 



Device code + 10*apDroach code 

7 



Subcase number 

Mode number 

Eigenvalue 





Format code 

Number of words per entry in next record = 8 

Not defined 

Title 

Subtitle 

Label 

10*point ID + device code ^repeat 

Point type >for each 

R(T1), R(T2), R(T3), R(R1). R(R2), R(R3))point 



iNotes 



1. Records 1 and 2 are repeated for each vector to be output. 



2. Device code = 



5. Point type 



!0 = X y output only 
1 = print 
4 = punch 
,5 = print and punch 



3, Format code = 

4. Approach code = 2, or 8 



1 = real 

2 = real /imaginary 

3 = magnitude/phase 



(] = grid point 
j2 = scalar point 
J3 = extra point 
(4 = modal point 



Table Trailer 



Words 1-6 contain no significant values. 



2.3-100 



DATA BLOCK DESCRIPTIONS 

2.3.28.14 i^CPHIP (TABLE). 
Description 

Output eigenvector requests (p set, S0RT1 , complex). 
Table Format 



Record 

1 



Word 



1 

2 

3 

4 

5 

6 

7 

8 

9 
10 

11-50 

51-82 

83-114 

115-146 

1 
2 

3-8 
9-14 



Type 



Item 



Header record 



Device code + 10*approach code 

1007 



Subcase number 

Mode number 

Eigenvalue (real part) 

Eigenvalue (imaginary part) 



Format code 

Number of words per entry in next record = 14 

Not defined 

Title 

Subtitle 

Label 

10*point ID + device code ^repeat 

Point type (for 

R(T1), R(T2). R(T3), R(R1), R(R2), R(R3)feach 

I(T1), I(T2), I(T3), I(R1). I(R2), I(R3))point 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 



2. Device code = 

3. Format code = 

4. Approach code 

5. Point type = 



fO = X y output only 

U = print 

i4 = punch 

[p = print and punch 

p = real 

(2 = real /imaginary 

(3 = magnitude/phase 



n = grid point 

)2 = scalar point 

J3 = extra point 

(.4 = modal point 



Table Trailer 



Words 1-6 contain no significant values. 



2.3-101 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.28.15 0ES1 (TABLE). 
Description 

Output element stress requests {S(JRT1 , real). 
Table Format 



Record 


Word 


Type 


Item 











Header record 


1 


1 
2 
3 
4 






Device code + 10*approach code 

5 

Element type 

Subcase number 




5 




I/R 


Time, Load set ID, or mode number 




6 




R/I 


Eigenvalue or 




7 











8 






Load set ID or 




9 






Format code 




10 






Number of words per entry in next record = NWDS 




11- 


50 




Not defined 




51- 


82 


B 


Title 




83- 


114 


B 


Subtitle 




115- 


146 


B 


Label 


2 


1 




I 


10*element ID + device code ) reoeat 




2- 


NWDS 


Mixed 


Element stress data >for each 



See 2.3.51 for details ) element 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 
'0 = X y output only 



Device code = 



ll = print 
1 4 = punch 
.5 = print and punch 



(1 = real 
3. Format code = <2 = real/imaginary 
(3 = magnitude/phase 



4. Approach code 
Table Trailer 



1, 2, 3, 5, 7, or 10 



Words 1-6 contain no significant values. 



2.3-102 



DATA BLOCK DESCRIPTIONS 



2.3.28.15 0ESB1 (TABLE). 
Description 

Output element stress requests (S0RT1 , real). 



Table Format 










Record 


Word 


Type, 


Item 











Header record 




1 


1 
2 
3 
4 
5 
6 
7 
8 
9 




Device code + 10*aDDroach code 

5 

Element type 

Subcase number 

Load set ID 







Format code 






10 




Number of words ner entry in next record 


= NWDS 




n-50 




Not defined 






51-82 


8 


Title 






83-114 


B 


Subtitle 






115-145 


B 


Label 




2 


1 


I 


10*element ID + device code ) repeat 






2-NWDS 


Mixed 


Element stress data >for each 
See 2.3.51 for details element 





Notes 



1. Records 1 and 2 are repeated for each vector to be output. 



fO = X y output only 

11 = print 

j4 = punch 

[5 = print and punch 

(1 = real 

;2 = real /imaginary 

(3 = magnitude/phase 



2. Device code = 

3. Format code = 

4. Approach code = 4 
Table Trailer 

Words 1-6 contain no significant values. 



2.3-103 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.28.17 laBESl (TABLE). 
Description 

Output element stress requests {S0RT1 , real) 
Table Format 



Record 


Word 


Type 


Item 









Header record 


1 


1 




Device code + 10*approach code 




2 




5 




3 




Element type 




4 




Subcase number 




5 




Mode number 




5 




Eigenvalue 




7 









8 









9 




Format code 




10 




Number of words per entry in next record = NMns 




n-50 




Not defined 




51-82 


B 


Title 




83-114 


B 


Subtitle 




115-146 


B 


Label 


2 


1 


I 


10*element ID + device code ) repeat 




2-rJWDS 


Mixed 


Element stress data >for each 
See 2.3.51 for details ) element 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 



2. Device code 



lO = X y output only 

)l = print 

|4 = punch 

(.5 = print and punch 



3. Format code = <2 

(3 

4. Approach code = 8 



real 

real/imaginary 

magnitude/phase 



Table Trailer 



Words 1-6 contain no significant values. 



2.3-104 



DATA BLOCK DESCRIPTIONS 



2,3.28.18 0ESC1 (TABLE). 
Description 

Output element stress requests (S0RT1 , complex), 
Table Format 



Record 

1 



Word 



1 

2 

3 

4 

5 

6 

7 

8 

9 
10 

11-50 

51-82 

83-114 

115-145 

1 

2-NWDS 



mi 



Item 



R/I 
/R 
/R 



B 
B 
B 

I 

Mi xed 



Header record 



Device code + 10*approach code 

1005 

Element type 

Subcase number 

Frequency or mode number 

or eigenvalue (real part) 

or eigenvalue (imaginary part) 

Load set ID 

Format code 

Number of words per entry in next record = NV/DS 

Not defined 

Title 

Subtitle 

Label 

10*element ID + device code ] reoeat 
Element stress data >for each 
See 2.3.51 for details ) element 



Notes 



1. Records 1 and 2 are repeated for each vector to be outout. 



2. Device code = 

3. Format code = 

4. Approach code 
Table Trailer 



(O = X y output only 

11 = print 

J4 = punch 

(5 = print and punch 

(1 = real 

<2 = real /imaginary 

(3 = magnitude/phase 

5, or 9 



Words 1-6 contain no significant values. 



2.3-105 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.28.19 0EF1 (TABLE). 
Description 

Output element force requests (S0RT1 , real). 
Table Format 



Record 


Word 


Type 


Item 









Header record 


1 


1 




Device code + 10*apDroach code 




2 




4 




3 




Element type 




4 




Subcase number 




5 


I/R 


Time, load set ID, or mode number 




6 


I/R 


or eigenvalue 




7 









8 




Load set ID or 




9 




Format code 




10 




Number of words oer entry in next record = MWDS 




11-50 




Not defined 




51-82 


B 


Title 




83-114 


B 


Subtitle 




115-146 


B 


Label 


2 


1 


I 


10*element ID + device code ) repeat 




2-NWDS 


Mixed 


Element force data >for each 
See 2.3.52 for details (element 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 

2. Device code = 



(0 = X y output only 

11 = print 

J4 = punch 

'5 = print and punch 



3. Format code 



p = real 

\2 = real /imaginary 

(3 = magnitude/phase 



4. Approach code = 1, 2, 3, 6, 7, or 10 
Table Trailer 

Words 1-5 contain no significant values. 



2.3-106 



DATA BLOCK DESCRIPTIONS 



2.3.28.20 0EFB1 (TA3LE) . 
Description 

Output element force requests (S0RT1 , real] 
Table Format 



Record 

1 



Word 



1 

2 

3 

4 

5 

6 

7 

8 

9 
10 

11-50 

51-82 

83-114 

115-145 



Tffie 



Item 



NWDS 



B 
B 
B 

I 
Mixed 



Header record 



Device code + 10*approach code 

4 

Element type 

Subcase number 

Load set ID 







Format code 

Number of words per entry in next record = NWDS 

Not defined 

Title 

Subtitle 

Label 



10*element ID + device code 
Element force data 
See 2.3.52 for details 



reneat 
for each 
element 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 



2. Device code 



fO = X y output only 

)1 = print 

|4 = punch 

[5 = print and punch 



(1 = real 

3. Format code = <2 = real/imaginary 

(3 = magnitude/phase 

4. Approach code = 4 
Table Trailer 

Words 1-6 contain no significant values. 



2.3-107 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.28.21 0BEF1 (TABLE). 
Description 

Output element force requests (S0RT1 , real). 
Table Format 



Record 


Word 


Type 


Item 









Header record 


1 


1 




Device code + 10*anDroach code 




2 




4 




3 




Element type 




4 




Subcase number 




5 




Mode number 




5 


R 


Eigenvalue 




7 









8 









9 




Format code 




10 




Number of words per entry in next record = N'.ilDS 




11-50 




Not defined 




51-82 


B 


Title 




83-114 


B 


Subtitle 




115-146 


B 


Label 


2 


1 


I 


10*element ID + device code ) repeat 




2-NWDS 


Mixed 


Element force data >for each 
See 2.3.52 for details ) element 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 



2. Device code = 

3. Format code = 

4. Approach code 



fO = X y outout only 

11 = print 

j4 = punch 

(5 = print and punch 

(1 = real 

y. = real /imaginary 

(3 = magnitude/phase 

8 



Table Trailer 



Words 1-6 contain no significant values. 



2.3-108 



DATA BLOCK DESCRIPTIONS 

2.3.28.22 0EFC1 (TABLE). 
Description 

Output element force requests (S0RT1 , complex). 
Table Format 



Record 

1 



Word 



1 

2 

3 

4 

5 

5 

7 

8 

9 
10 

11-50 

51-82 

83-114 

115-145 

1 

2-NUDS 



IZEi 



Item 



R/I 
/R 
/R 



I 
Mixed 



Header record 



Device code + 10*approach code 

1004 

Element type 

Subcase number 

Frequency or mode number 

or eigenvalue [real part) 

or eigenvalue (imaginary part) 

Load set ID or 

Format code 

Number of words oer entry in next record = N'-IDS 

Not defined 

Title 

Subtitle 

Label 



10*element ID + device code 
Element force data 
See 2.3.52 for details 



reoeat 
for each 
element 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 



2. Device code = 

3. Format code = 

4. Approach code 
Table Trailer 



= X y output only 
1 1 = print 

1 4 = punch 

,5 = print and punch 

1 = real 

2 = real /imaginary 

3 = magnitude/phase 

5, or 9 



Words 1-6 contain no significant values. 



2.3-109 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.28.23 PUGVl (matrix - see note below) 

Description 

PUGVl contains the translation components of UGVl rotated to the basic coordinate system. 

Note 

The first four words of each logical record (column) contain identification data for the 
column. These words must be read prior to calling the appropriate unpacking routine. 

Word 1 = subcase number 
Word 2 = 1 

Word 3 = static load set ID 
Word 4=0 

Matrix Trailer 

Trailer is same as that for UGVl except word 1 = 0, and word 6=0 (see section 2.3.36.1). 



2.3-110 



DATA BLOCK DESCRIPTIONS 

2.3.28.24 PUBGVl (matrix - see note below) 

Description 

PUBGVl contains the translation components of UBGV rotated to the basic coordinate system. 

Note 

The first four words of each logical record Ccolumn) contain identification data for the 
column. These words must be read prior to calling the appropriate unpacking routine. 

Word 1 = subcase number 
Word 2 = 1 

Word 3 = static load set ID 
Word 4=0 

Matrix Trailer 

Trailer is same as that for UBGV with word 1 =0, and word 6=0. 



2.3-ni 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3,28,25 PPHIG (matrix - see note below) 

Description 

PPHIG contains the translation components of PHIG rotated to the basic coordinate system. 

Note 

The first four words of each logical record (column) contain identification data for the 
column. These words must be read prior to calling the appropriate unpacking routine. 

Word 1 = subcase number 
Word 2=2 

Word 3 = mode number 
Word 4 = eigenvalue (A) 

Matrix Trailer 

Trailer is same as that for PHIG with word 1 = 0, and word 6=0, (see section 2.3.27.4). 



2.3-112 



DATA BLOCK DESCRIPTIONS 



2.3.28.25 PUGV (matrix - see note below) 
Description 

PUGV contains the translation components of UPV (excluding extra ooints) rotated to the hasic 
coordinate system. 

Note 

The first four words of each logical record (column) contain identification data for the 
column. These words must be read prior to calling the appropriate unpacking routine. 

■Jord 1 = subcase number 
'Aord 2 = 3 
Word 3=0 
Word 4 = time 

Matrix Trailer 

Trailer is same as that for UGV with word 1 = 0, and word 6=0, (see section 2.3.27,1). 



2.3-113 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.29 Data Blocks Output From Module DPD 

2.3.29.1 GPLD (TABLE) 

Description 

Grid Point List Dynamics. 

One logical record which contains a list of all grid points, scalar points and extra points 
in the model in internal sort. 



Table Format 








Record 


Word 


Type 


Item 









Header record 


1 


1 


I 


ID for first point 



n I ID for n**^ point 

2 End-of-file 

Table Trailer 

Word 1 = number of grid points + number of scalar points + number of extra points. 
Word 2-6 = zero. 

2.3.29.2 SILD (TABLE) 

Description 

Scalar Index List Dynamics. 

Two logical records. First logical record contains scalar index values in the p-displace- 
ment set for each point in the dynamics model (internal order). These values are defined 
as follows: 

SILD^ = 1 

5jl_Q _ 'LD^. + 6 if i corresponds to a grid point 

i+1 ~ '-D^ + 1 if i corresponds to a scalar or an extra point 

The second logical record contains an equivalence between scalar index values in the 
g-displacement set and scalar index values in the p-displacement set. 



2.3-114 



DATA BLOCK DESCRIPTIONS 



Table Format 



Record 



Word 



n 
1. 2 



1121 



Item 
Header record 
Scalar index for first point 

Scalar index for n point 
SIL value, SILD value 



Tabl 


e Tra 


ler 




Word 


1 




Word 


2 




Word 


3-6 



2m- 1,2m 



SIL value, SILD value 
End-of-file 



degrees of freedom in the p-displacement set (LUSETD). 

number of extra points. 

zero. 



2.3.29.3 USETD (TABLE) 

Description 

Displacement set definitions table dynamics. 

USETD contains one logical record. Each word corresponds to each degree of freedom in the 
p-displacement set (in internal order) and contains ones in specified bit positions indicat- 
ing the displacement sets to which the point belongs. 



Table Format 



Record 



Word 



Ty£e 



Item 
Header record 
Mask for first degree of freedom 

Mask for n degree of freedom 
End-of-file 



Notes 



Bit positions for the various displacement sets are defined as follows: 



d 


^e 


"e 


P 


e 


^b 


^g 


i 


a 


f 


n 




9 


r 





s 


m 



17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 



2.3-115 



DATA BLOCK AND TABLE DESCRIPTIONS 



Table Trailer 



Word 1 = degrees of freedom in the p-displacement set (LUSETD). 

Word 2 = number of extra points. 

Word 3 = zero. 

Word 4 = logical "or" of all USETD masks. 

Word 5 = zero. 

Word 6 = zero. 



2.3.29.4 EED (TABLE) 

Description 

Eigenvalue Extraction Data. 

The EED contains one logical record for each eigenvalue extraction card type (EIGS, EIRC, 
EIGP, EIGR). Each logical record contains data from all cards of a given type. 



Table Format 



Record 



Word 




1 
2 
3 
4 
5 
Detailed format for EIGB data: 



Word 

1-3 
4 

5-6 
7-8 

9-n 

12 

13-14 

15 

16-21 



Ml 

1 
I 
B 
R 

I 

R 



Item 
Header record 

EIGB data (if EIGB cards in bulk data) 
EIGC data (if EIGC cards in bulk data) 
EIGP data (if EIGP cards in bulk data) 
EIGR data (if EIGR cards in bulk data) 
End-of-file 

Item 



107 
Set 


, 1. 

ID 





Method 




^• 


F 

2 




%' 


^d' 


h 



E 

Norm 

If norm = "Pj^INT", SIL value in 

a-set of normalization point 

Not defined 



repeated 
for each 
EIGB card 
in bulk data 



2.3-116 (7/1/70) 



DATA BLOCK DESCRIPTIONS 



Detailed format for EIGC card: 



Word Type 

1-3 I 

4 I 

5-6 B 

7-8 B 

9 I 

10 

11 R 

12-13 

14-15 R 

16-17 R 

18 R 

19-20 I 

21 

14+8k-21+8k I 

Detailed format for EIGP card: 



Item 

207, 2, 

Set ID 

Method 

Norm 

If Norm = "POINT", SIL value in analysis 

set of normalization point 
Not defined 



Not defi 


ned 




a w 






a a 




repeated 
for each 






region 
definition 


Not defi 
-1 (k = 


ned ) 

number of regions 



repeated 
for each 
EIRC card 
in bulk data 



Word 



Iffii 



Item 



1-3 


I 


257, 4, 


D 


I 


Set ID 1 repeated for 


6-7 


R 


a, to >each EIGP card 


8 


I 


M ) in bulk data 



Detailed format for EIGR card: 



Word 



Type 



Item 



1-3 
4 

5-6 
7-8 






I 
I 
B 
R 




307, 3, 

Set ID ^ 

Method 

F^. F^ 


1 


9-11 

12 

13-14 

15 

16-21 






I 

R 
B 

I 




Ne. N,. N^ 1 

E 

Norm 

If norm = "P(3INT", SIL value in 

a-set of normalization point 

Not defined 

J 


1 repeated 
1 for each 
/ EIGR card 
in bulk data 

I 


Table Trailer 














Word 1 


= 












bit 17 = 

18 = 

19 = 

20 = 


1 

1 
1 
1 


if 
if 
if 

if 


EIGB 
EIGC 
EIGP 
EIGR 


record 
record 
record 
record 


exists 
exists 
exists 
exists 





other bits = 
Word 2-6 = zero. 



2.3-117 (7/1/70) 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.29.5 EQDYN (TABLE) 

Description 

Equivalence between external points and scalar index values - dynamics. 

EQDYN contains two logical records. The first record contains pairs of external point 
numbers and scalar index values in the p-displacement set for the points in external order. 
The second record is essentially the same as the first except that the type of point (grid, 
scalar, extra) is coded in the second word of the pair. 



Table Format 
Record 

1 



Word 



1.2 



IZEi 



Item 
Header record 
ID for first point, scalar index for first point 



2n-l,2n 



ID for n point, scalar index for n point 



1,2 



ID for first point, 10*scalar index + type 



2n-l,2n 



ID for n point, 10*scalar index + type 
End-of-file 



Note 



p for grid point 
Type = \Z for scalar point 
(3 for extra point 



Table Trailer 



Word 1 = number of grid points + number of scalar points + number of extra points 
in dynamics model . 

Word 2 = number of extra points. 

Word 3-6 = zero. 



2.3-118 



DATA BLOCK DESCRIPTIONS 



2,3.29.6 TFP00L (TABLE). 

Description 

Transfer Function Fool. 

The TFP00L data block contains one logical record for each transfer function set defined in 
the bulk data on a TF bulk data card. Point and component values are converted to row and 
column numbers in the p-displacement set. 

Table Format 



Record 


Word 


Type 


Item 









Header record 


1 


1 
2 
3-5 


I 
I 
R 


Set ID 

65536*column number + row m 

Coefficients 


n 






Same format as first record 


n+1 






End-of-file 


Table Trailer 









each set of 
non-zero terms 



Word 1 = number of transfer function sets. 
Word 2-6 = zero. 

2.3.29.7 DLT (TABLE). 

Description 

Dynamic Loads Table. 

The header record of the DLT contains a summary of all dynamic load sets defined in the 
problem. The first record of the DLT contains all DL0AD cards (if DLjiiAD cards have been input), 
Each succeeding record contains all data for one dynamic load set. 



Table Format 



Record 



Word 



4+£,5+Jl 



Tyge 



1-2 


B 


3 


I 


4-3+m 


I 


4-Hn-3+m+n • 


I 


1 


I 


2 


R 


3-4 


R.I 



Item 

Data block name 

m = number of DL0AD set ID's 

Set id's on OL0AD cards 

Set id's on RL(5AD1 , 2 and TL0AD1 , 2 cards 



Set ID 

Scale factor 

Scale factor, set ID 



repeated 
for each 
DL0AD 
card 



_i 



2.3-119 (12-1-69) 



DATA BLOCK AND TABLE DESCRIPTIONS 



Record Word T ype Item 

k 1 I Dynamic load card tyoe 

P y (= no time delays 

^ \?« time delays 

3-8 See Notes 

9 I SIL number \ repeated for each 

10-12 R A, T, 9 I dynamic load set 

n+2 End-of-file 

Notes 

1. If no DL0AD cards have been input, the third word of the header record is zero and the 
DL0AD record does not exist. Therefore, record 1 of the DLT corresponds to the load 
set defined in word 4 of the header record. 

2. DL0AD-set ID'S are in sort by set ID. In record 1, set ID's within a DL0AD card are 
in sort. 

3. Within other records, data is in sort by SIL number. 

4. Formats by dynamic load card type are as follows: 



1 = RL0AD1 



RL8IAD2 



3 = TL0AD1 



Word Type Item 

3 I Table ID for C(f) 

4 I Table ID for D(f) 
5-8 Not defined 



Word Type Item 

3 I Table ID for B(f) 

4 I Table ID for ())(f) 
5-8 Not defined 



Word Type Item 

3 I Table ID for F(t) 

4-8 Not defined 



TL0AD2 





Word 


Type 


Item 




3-4 


R 


^Kl' ^K2 




5-6 


R 


\' H 




7-8 


R 


"k* "k 


Table Trailer 









Word 1 = GIN0 file name of DLT. 
Word 2-6 = undefined. 



2.3-120 



DATA BLOCK DESCRIPTIONS 



2.3.29.8 PSDL (TABLE) 



Description 



Power Spectral Density List. 

The first logical record of the PSDL contains RANDPS data. Subsequent logical records 
contain RANDT data, one set per logical record. Each RANDT logical record contains a 
sorted list of unique time lags defined in the set. 



Table Format 










Record 


Word 


Type 




Item 





1.2 
3 


B 

I 


Data block name 

RANDT set ID 

1 






2+n 


I 


RANDT set ID 
n 




1 


1 

2 

3 

4.5 

6 


I 
I 
I 
R 
I 


RANDPS set ID ] 
Load set ID / 
Load set ID / 
Compl ex number \ 
Table ID J 


1 repeated 
'for each 
.RANDPS 
card in 
'bulk data 



1-m 



Time lags 



n+1 
n+2 



Same format as record 2 
Data belongs to RANDT set ID 

End-of-file 



Notes 



1. RANDPS cards must be present for data block to exist. Therefore, record one always 
contains RANDPS data. 

2. If no RANDTl or RANDT2 cards are present in the bulk data, the header record will 
contain exactly two words and record two will be an end-of-file. 



Table Trailer 



Word 1 

Word 2-6 = zero. 



number of RANDT sets, or 
65535 if no RANDT sets exist. 



2.3-121 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.29.9 FRL (TABLE) 

Description 

Frequency Response List. 

The FRL contains one logical record for each different frequency set defined in the bulk 
data. Each record contains a sorted list of the unique frequencies defined in the set. 



Table Format 








Record 


Word 


Type 


Item 





1,2 
3 


B 

I 


Data block name 

Set ID 

1 




2+n 


I 


Set ID^ 


1 


1-m 


R 


Frequencies beli 



1-k 



Frequencies belonging to set ID 



n+1 

Table Trailer 
Word 1 
Word 2-6 



number of frequency sets, 
zero. 



End-of-file 



2.3.29.10 NLFT (TABLE) 

Description 

Non-Linear Forcing Table. 

The header record of the NLFT contains a sorted list of set identification numbers for all 
N0LIN sets defined in the bulk data. Each logical record of the NLFT contains all data for 
a single set. Point and component numbers on the N0LIN cards are converted to scalar index 
values in both the d- and e-displacement sets. 



Table Format 








Record 


Word 


Type 


Item 





1.2 
3 


B 

I 


Data block name 

Set ID 

1 



2+n 



Set ID, 



n 



2.3-122 



DATA BLOCK DESCRIPTIONS 



Record Word Type Item 

1 1 I Type of nonlinear load (lstype=4) 

2 I SIL value in d-set 

3 I SIL value in e-set 

4 R Scale factor 

5 I SIL value in d-set 

6 I SIL value in e-set , ^ . ^ 
type = 1 = Table ID (integer) V '"^"u^^/^!"'" 
type = 2 = SIL value in d-set (integer) /^^^] ^'"'-IN 
type = 3 = Scale factor (real) ( "'''^ ''" set 
type = 4 = Scale factor (real) 
type = 1 = Not defined 

I type = 2 = SIL value in e-set (integer) 

I type = 3 = Not defined 

type = 4 = Not defined 



n Same format as record 1. 

Data belongs to set ID . 

n+1 End-of-file 

Note 

Within each record, the data is sorted on word 2 of each 8-word entry in the record. 
Table Trailer 

Word 1 = number of Nj>LIN sets. 

Word 2-6 = zero. 



2.3-123 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.29.11 TRL (TABLE). 
Description 

Transient Response List. 

The header record of the TRL contains a list of all transient initial condition set 
identifications in the bulk data. Subsequent logical records contain TIC data for each 
set (one set per logical record). If TSTEP cards are oresent in the bulk data, this data 

follows the TIC data, one logical record for each TSTEP set. 



Table Format 








Record 


Word 


Type 


Item 





1,2 

3 
4 


B 


Data block name 
Number of TIC sets 

Set ID 

1 




3+n 




Set 10^ 




4+n 




Degrees of freedom 


1 


1 
2,3 


R 


SIL value in d-set 



J condition in set 



Same format as record 1 
Data belongs to set ID 



n+1 



TSTEP set ID 
N ) repeated for 
At > each interval 
NO 1 in set 



n+m 
n+m+1 



Same format as record n+1 
End-of-file 



Kotes 



1. Data within each TIC record is sorted on word 1 of each 3-word entry. 

2. If word 3 of the header record = 0, then the first logical record of the TRL contains 
TSTEP data. 

3. If TSTEP data is not present in the bulk data, and end-of-file will follow the last 
TIC record. 



Table Trailer 



Word 1 = number of TIC sets. 
Word 2 = number of TSTEP sets. 
Word 3-6 = zero. 



2.3-124 



DATA BLOCK DESCRIPTIONS 



2.3.30 Data Blocks Output From Module READ 



2.3.30,1 LAMA 


(TABLE) 








Description 














\ 

a 


Re 


■a1 


Eigenvalue 


Table 






Table Format 














Record 






'vord 




Tvne 


Item 















Header record 


1 






1 
2 
3 

4-9 
10 

11-50 
51-146 




I 

I 
I 

I 
I 

b 


OFF ID record 

21 

9 



7 

Not defined 

Title, subtitle, and label from /OUTrt'T/ 


2 






1 
-? 

3 

4 
5 
6 
7 




I 
I 
R 

R 
R 
R 
R 


OFP data record 
■''ode number 
Extraction order 
A - eigenvalue 

f =^i|X| 

w = i/Z-n 
Generalized mass 
Generalized stiffness 


3 












End-of-file 



rj ctes 

1. The seven data v^ords in record 2 repeat for each eigenvalue found in READ. 

Table Trailer 

iion-zero trailer 

2.3.30.2 PHIA (MATRIX) 
Description 

[* ] - Eigenvectors matrix giving the eigpnvectcrs (displaceirents) in the a set. 
a 

Matrix Trailer 



number of columns = number of eigenvalues found in READ 

I J umber of rov;s = a 

Form = rectangular 

Type = real single precision 



2.3-125 (3/1/70) 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.30.3 MI (MATRIX) 

Description 

[m.] - Modal Mass Matrix 

Matrix Trailer 

Number of columns = number of eigenvalues found in READ 

Number of rows = number of eigenvalues found in READ 

Form = generc.1 

Type = real single precision 

2.3.30.4 0EIGS (TABLE) 

Description 

Real Eigenvalue Summary Table 



Table Format 








Record 


Word 


T^pe 


Item 









Header record 


1 


1 
2 
3 


I 

I 

I 


21 

9 

2 If Inverse Power Method 

1 If Determinant Method 

4 if Givens Method 




4 
5 
6 
7 
8 
9 
10 


I 

I 
I 
I 
I 
I 












Words 11-17 depend on the method used. 



Determinant Method: 



11 1 


Number 


12 ] 


Number 


13 


Number 


14 


Number 


15 


[ Number 


16 


Number 


17 


Reason 




1 




2 




3 




4 



of eigenvalues extracted 

of passes through starting points 

of criteria changes 

cf starting point moves 

of triangular decompositions 

of failures to iterate to a root 

for termination 

- All requested roots formed 

- Out of region predictions from every 
starting point 

- Insufficient time to extract another 
root 

- Everywhere singular matrix 



2.3-126 (12-1-69) 



DATA BLOCK DESCRIPTIONS 



Record 



Word 



Im. 



Inverse Power Method: 




n I 


Number 


12 I 


Number 


12 I 


Number 


14 I 


Number 


15 I 


Number 


16 I 


Dummy 


17 I 


Reasons 




1 




2 




3 




4 




5 




6 




7 



Item 



of eigenvalues extracted 
of starting points used 
of starting points moved 
of triangular decompositions 
of vector iterations 

for termination 

- 2 Singularities encountered in a row 

- 4 Shifts while tracking one root 

Regions completed 
-3* Number of estimated roots were found 
All roots of problem found 
Number desired roots found 
X outside maximum range 
Insufficient time to extract another 
root 

200 iterations and 1 shift point move 
before locating a root 



Givens Method: 



11 
12 
13 

14 
15 
16 
17 



18 

19 
20 

21 



22-50 
51-146 



Number of eigenvalues extracted 

Number of eigenvectors computed 

Number of failures to converge to an eigenvalue 

Number of failures to converge to an eigenvector 

Dummy 

Dummy 

Reason for terminiition 

- Normal termination 

3 - Insufficient time to evaluate eigenvectors 
Value of off-diagonal element of modal mass matrix 
having largest magnitude (zero where not applicable) 
Column of 18 in MI 
Row cf 18 in MI 

Number of off-diagonal elements of modal mass 
matrix that fail to meet error criterion 
Not used 
Title, subtitle, label 



Records 2 and 3 exist only when the Determinant Method is used. 



1 
2 
3 
4 
5 
6 

-! 
I 

8 

9 
10 

11-50 
51-146 

1 
2 

3 

4 



21 

9 

3 













6 

Not used 

Title, subtitle, label 

Starting point ID 
X - Starting point 

oj = JT - Starting point 
f = aj/2TT - Starting point 
Determinant at X 



Words 1-6 are repeated 
for each starting point 



2.3-127 (12-1-69) 



DATA BLOCK DESCRIPTIONS 



Record Word Type Iti£ 

6 R Scale factor (power of 10) \ 

of determinant ' 

n End-of-file 



Table Trailer 



Nonzero 



2.3-127a (12-1-69) 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.31 Data Blocks Output From "odule DSMG1 

2.3.31."! KDGG (MATRIX) 
Descript ion 

[K ] - Partition of differential stiffness matrix - g set. 
gg 

Matrix Trailer 



Number of columns = n 

Jiumber of rows = n 

Form = symmetric 

Type = rsal double precision 



2.3-128 



DATA BLOCK DESCRIPTIONS 



2.3.32 Data Blocks Output From Module SMP2 

2.3.32.1 KDAA (MATRIX) 
Description 

[K^^] - Partition of differential stiffness matrix - a set. 

ad 

Matrix Trailer 

Number of columns = a 

Number of rows = a 

Form = symmetric 

Type = real double precision 



2.3-129 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.33 Data Blocks Output From Module DSMG2 

2.3.33.1 KBLL (MATRIX) 
Description 

large displacements - I set. 



[k'' ] - Partition of the stiffness matrix of the first order aoproximation to 



Matrix Trailer 

Number of columns = S- 

Number of rows = 2. 

Form = symmetric 

Type = real double precision 

2.3.33.2 KEFS (MATRIX) 
Description 

[k'' ] - Partition of the stiffness matrix of the first order approximation to 
large displacements. 

Matrix Trailer 



Number of columns = s 

Number of rows = f 

Form = rectanqular 

Type = real double precision 

2.3.33.3 KBSS (MATRIX) 
Description 

[K^ ] - Partition of the stiffness matrix of the first order approximation to 
^^ larqe displacements - s set. 

Matrix Trailer 

Number of columns = s 

Number of rows = s 

Form = symmetric 

Type = real double precision 



2.3-130 



DATA BLOCK DESCRIPTIONS 



2.3.33.4 PBL (MATRIX) 

Description 

\P(^\ - Partition of the load vector of the first order approximation to the 
' large displacements - i set. 

Matrix Trailer 

Number of columns = 1 

Number of rows = ^ 

Form = rectangular 

Type = real single precision 

2.3.33.5 PBS (MATRIX) 

Description 

j P ?■ - Partition of the load vector of the first order anoroximation to the 
large displacement problem - s set. 

Matrix Trailer 

Number of columns = 1 

Number of rows = s 

Form = rectangular 

Type = real single precision 

2.3.33.0 YBS (MATRIX) 
Description 

rsl " P^i^tition of the constrained displacement vector of the first order 
approximation to the large displacement vector - s set. 

Matrix Trailer 

Number of columns = 1 

Number of rows = s 

Form = rectangular 

Type = real single precision 

2.3.33.7 UB00V (MATRIX) 

Description 

{u f - Partition of the displacement vector of the first order approximation to the 
large displacement problem - o set. 

Matrix Trailer 



Number of columns = 1 

Number of rows = o 

Form = rectangular 

Type = real single precision 



2.3-131 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.34 Data Blocks Output From Module PLAl . 

2.3.34.1 KGGXL (MATRIX). 
Description 

Tk'^^I - Stiffness matrix of linear elements exclusive of general elements - g set. 

gg 

Matrix Trailer 

Number of columns = g 

Number of rows = g 

Form = syrmetric 

Type = real double precision 

2.3.34.2 ESTL (TABLE). 
Description 

Element Summary Table for Linear Elements. 

The ESTL contains data copied from the EST data block. An element's EST data resides in 
the ESTL only if it is a linear element of the model. 

Table Format 

Same format as the EST data block output from module TAl . 

Table Trailer 

Word 1 = number of element entries in ESTL. 
Words 2-6 = zero. 



2.3-132 



DATA BLOCK DESCRIPTIONS 



2.3.34.3 ESTNL (TABLE). 
Description 

Element Summary Table for Non-Linear Elements. 

The ESTNL, used only in the Piecewise Linear Analysis Rigid Format, is constructed from the 
Element Summary Table (EST). It contains one logical record for each element type for which at 
least one element of that type is non-linear (an element is defined to be non-linear if its 
modulus of elasticity is defined as the first derivative of a stress-strain tabular function 
input on a TABLESl bulk data card) and for which a request for stress output is found. The con- 
struction of the ESTNL is as follows: the EST data block is read and each element is tested for 
possible non-linearity. If the element is non-linear and the user has requested element stress 
data to be output, its element data is copied onto the ESTNL data block and then initial stress 
data is appended. The only elements admissible to the ESTNL are: R0D, TUBE, C0NR0D, BAR, TRMEM, 
TRIAl, TRIA2, QDMEM, QUADl , QUAD2. 

Table Format 



Record 



Word 



Item 



2 to N+1 
N+2 to N+M+1 



Header record 

Element type (integer) 1 repeated for 

Element EST data ^repeated for each >each admissible 
Element stress data/non-linear element ) element tyne 



Notes 



1. N is the number of words in the EST data section. 
M is the number of stress words appended. 

2. The number of records in the ESTNL corresponds to the number of separate admissible 
element types for which at least one element is non-linear. 



Table Trailer 

Word 1 = total number of elements in the ESTNL. 
Words 2-6 = zero. 

Detailed ESTNL Formats 



RQID. C0NR0D: 



Word 



Item 



1-17 
18 
19 

20 

21 



EST data 

* 
Co, previous strain value once removed, initially zero 

* 
£ , previous strain value, initially zero 

* 

E , the previously calculated modulus of elasticity, initially 
the value of E given a MATl card. 

T , the previously calculated torsional moment, initially zero 



2.3-133 



TUBE: 



DATA BLOCK AND TABLE DESCRIPTIONS 



BAR: 



TRMEM: 



TRIAl; 



Word 

1-16 
17-20 



Item 

EST data 

Same as words 18-21 for the RjiD. 



Word 



1-42 


EST 


43 


* 


44 


* 


45 


* 




the 


46 


* 

Vi 


47 


* 


48 


* 

T 


49 


* 



Item 

data 

previous strain value once removed, initially zero 

previous strain value, initially zero 

the previously calculated modulus of elasticity, initially 
value of E given on a MATl card 



The previous element forces, initially zero 



50 



la 
* 



Word 

1-21 
22 
23 
24 

25 
26 
27 



Item 

EST data 

* 
Co, previous strain value once removed, initially zero 

* 
e , previous strain value, initially zero 

* 

E , the previously calculated modulus of elasticity, initially the 
value of E given on a MATl card 

* 

* 
a ) The current membrane stresses, initially zero 

* 

°xy 



Word 

1-27 
28-33 



Item 

EST data 

Same as words 22-27 for the TRMEM 



2.3-134 (12-1-69) 



TRIA2: 



QDMEM: 



QUADl ; 



QUAD2: 



DATA BLOCK AND TABLE DESCRIPTIONS 



Word 





* 


34 


\ 




* 


35 


M 




y 




* 


36 


M 




XX 




* 


37 


V 




X 




* 


38 


v„ 



Item 



The previous element forces, initially zero 



Word 

1-27 
28-32 



Item 

Same as words 1-27 for the TRMEM 
Same as words 34-38 for the TRIAl 



Word 

1-26 
27-32 



Item 

EST data 

Same as words 22-27 for the TRMEM 



Word 



Item 



1-32 
33-38 
39-43 



EST data 

Same as words 22-27 for the TRMEM 

Same as words 34-38 for the TRIAl 



Word 

1-26 
27-32 
33-37 



Item 

EST data 

Same as words 22-27 for the TRMEM 

Same as words 34-38 for the TRIAl 



2.3-134a (12-1-69) 



DATA BLOCK DESCRIPTIONS 



2.3.34.4 ECPTNL (TABLE). 
Description 

Element Connection and Properties Table for Non-Linear Elements. 

The ECPTNL, used only in the Piecewise Linear Analysis Rigid Format, is constructed from the 
ECPT data block. The ECPTNL contains one logical record for each grid point or scalar point of 
the model. Each logical record contains Element Summary Table (EST) data plus initial element 
stress data appended to this data for each non-linear element connected to the pivot point. (An 
element is defined to be non-linear if its modulus of elasticity is defined as the first derivative 
of a stress-strain tabular function input on a TABLESl card). The only elements admissible to the 
ECPTNL are: R0D, TUBE, C!3NR0D, BAR, TRMEM, TRIAl , TRIA2, QDMEM, QUADl , QUAD2. 

Table Format 



Record 



Word 



Item 



n+1 



Header record 

1 SIL number for "pivot" arid ^repeated 

or scalar point (integer) f for each arid 

2 Element type ( integer Jl repeated for each >or scalar 

3 to N+2 Element EST data >non-linear element ^noint in the 
N+3 to N+M+2 Element stress data jconnected to the pivot jmodel 

End-of-file 



Notes 



1. N is the number of words in the EST data section. 

M is the number of stress words appended. The number of stress words appended in 
generating the ECPTNL data block is not the same as in generating the ESTNL data block. 

2. n is the total number of grid and scalar points in the model. 

3. If all elements connected to a pivot point are linear, then the record contains only 
one word, the pivot point set negative. 

Table Trailer 

Word 1 = total number of element entries in the ECPTNL. 
Words 2-6 = zero. 

Detailed ECPTNL Formats 



R0D, C0NR0D: 



Word 



Item 



1-20 



Same as ESTNL data. Note word 21 of the ESTNL 

is not present in the ECPTNL data for the R(ZID, C0NR0D. 



2.3-135 



DATA BLOCK AND TABLE DESCRIPTIONS 

TUBE: 

Word Item 

1-19 Same as ESTNL data. Note word 20 of the ESTNL is not 
present in the ECPTNL data for the TUBE. 

BAR: 

Word Item 

1-45 Same as ESTNL data. Note words 46-50 of the ESTNL are not 
present in the ECPTNL data for the BAR. 

TRMEM: 

Word Item 

1-27 Same as ESTNL data. 

TRIAl : 

Word Item 

1-33 Same as ESTNL data. Note words 34-38 of the ESTNL are not 
present in the ECPTNL data for the TRIAl. 

TRIA2: 

Word Item 

1-27 Same as ESTNL data. Note words 28-32 of the ESTNL are not 
present in the ECPTNL data for the TRIA2. 

QDMEM: 

Item 
Same as ESTNL data. 

QUAD! : 

Word Item 

1-38 Same as ESTNL data. Note words 39-43 of the ESTNL are not 
present in the ECPTNL data for the QUAD!. 



2.3-136 (12-1-69) 



DATA BLOCK AND TABLE DESCRIPTIONS 

QUAD2 : 

Word Item 

1-32 Same as ESTNL data. Note words 33-37 of the ESTNL are not 
present in the ECPTNL data for the QUAD2. 



2.3-136a (12-1-69) 



DATA BLOCK DESCRIPTIONS 



2.3.35 Data Blocks Output From Module ADD 

2.3.35.1 KGGSUM (MATRIX) 
Description 

Sum of [Kjg] and [kJJ]. 

Used only in the Piecewise Linear Analysis Rigid Format and is equivalent to [Kgq^' 

Matrix Trailer 

Number of columns = g 

Number of rows = g 

Form = symmetric 

Type = real double precision 

2.3.35.2 PG (MATRIX) 
Description 

P ( - Incremental load vector used in Piecewise Linear Analysis. 

Matrix Trailer 

Number of columns = 1 

Number of rows = g 

Form = rectangular 

Type = real single precision 

2.3.35.3 KDAAM (MATRIX) 
Description 

[K^'!'] - The negative of [K^ J (see section 2.3.32). 

aa da 

Used only in the Buckling Analysis Rigid Format. 

Matrix Trailer 

Number of columns = a 

Number of rows = a 

Form = symmetric 

Type = real double precision 



2.3-137 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.36 Data Blocks Output From Module PLA2 

2.3.36.1 UGVl (MATRIX) 

Description 

[u ] - Matrix of successive sums of incremental displacement vectors - g set. 
^ Used only in the Piecewise Linear Analysis Rigid Format. 

Matrix Trailer 

Number of columns = number of factors on a PLFACT bulk data card 

Number of rows = g 

Form = rectangular 

Type = real single precision 

2.3.36.2 PGVl (MATRIX) 

Description 

[P ] - Matrix of successive sums of incremental load vectors - q set. Used 
^ only in the Piecewise Linear Analysis Rigid Format. 

Matrix Trailer 

Number of columns = number of factors on a PLFACT bulk data card 

Number of rows = g 

Form = rectangular 

Type = real single precision 

2.3.36.3 QGl (MATRIX) 

Description 

[q ] - Matrix of successive sums of incremental vectors of single point constraint 
^ forces - g set. Used in the Piecewise Linear Analysis Rigid Format only. 

Matrix Trailer 

Number of columns = number of factors on a PLFACT bulk data card 

Number of rows = g 

Form = symmetric 

Type = real single precision 



2.3-138 



DATA BLOCK DESCRIPTIONS 

2.3.37 Data Blocks Output From Module PLA3 . 

2.3.37.1 0NLES (TABLE). 
Description 

Output table for nonlinear element stresses. 
Format 

Same format as 0ES1 table output from module SDR2. 
Note 

0NLES is written in subroutine PLA32 of module PLA3. 

Table Trailer 

Word 1 = total number of element entries in 0NLES. 
Word 2-6 = zero. 

2.3.37.2 ESTNLl (TABLE). 
Description 

Element summary table for nonlinear elements - updated. 

Used only in the Piecewise Linear Analysis Rigid Format, the ESTNLl data block is the same 
as the ESTNL data block except that the appended stress information is undated. See data block 
description for ESTNL for further details. 

Table Format 

Same format as the ESTNL data block. 

Table Trailer 

Word 1 = number of element entries in ESTNLl. 
Word 2-6 = zero. 



2.3-139 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.38 Data Blocks Output From Module PLA4 . 

2.3.38.1 KGGNL (MATRIX). 
Description 

[k"^] - Stiffness matrix of nonlinear elements - g set. 

gg 

Used only in the Piecewise Linear Analysis Rigid Format. 
Matrix Trailer 

Number of columns = g 

Number of rows = g 

Form = synmetric 

Type = real double precision 

2.3.38.2 ECPTNLl (TABLE). 
Description 

Element Connection and Properties Table for Non-Linear Elements - undated. 

Used only in the Piecewise Linear Analysis Rigid Format, the ECPTNLl data block is the 
same as the ECPTNL data block except that the appended stress information is updated. See 
description for ECPTNL for further details. 

Table Format 

Same format as the ECPTNL data block. 

Table Trailer 

Word 1 = total number of element entries in ECPTNLl. 
Word 2-6 = zero. 



2.3-140 



DATA BLOCK DESCRIPTIONS 

2.3.39 Data Blocks Output From Module CASE . 

2.3.39.1 CASEXX (TABLE). 

Description 

Case Control data table for dynamics problems. 

Table Format 

The format of the records is exactly like CASECC, (see section 2.3,1.1) with dynamic 
looping records deleted. 

Table Trailer 

Word 1 = number of records in CASEXX. 
Word 2-6 = zero. 



2.3-141 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.40 Data Blocks Output From Module MTRXIN 

2.3.40.1 K2PP (MATRIX) 

Description 

2 
[K ] - Direct input stiffness matrix - p set. 
PP 

Matrix Trailer 

Number of columns = p 

Number of rows = p 

Form = square 

Type = depends on input 

2.3.40.2 M2PP (MATRIX) 



Description 

2 

[M ] - Direct input mass matrix - p set. 
PP 

Matrix Trailer 

Number of columns = p 

Number of rows = p 

Form = square 

Type = depends on input 



2.3.40.3 B2PP (MATRIX) 



Description 

2 
[B ] - Direct input damping matrix - p set. 

Matrix Trailer 

Number of columns = p 

Number of rows = p 

Form = square 

Type = depends on input 



2.3-142 



DATA BLOCK DESCRIPTIONS 

2.3.41 Data Blocks Output From Module GKAD 

2.3.41.1 KDD (MATRIX) 

Description 

[K, ,] - Dynamic stiffness matrix - d set. 

Matrix Trailer 

Number of columns = d 

Number of rows = d 

Form = square 

Type = complex double precision 

- frequency response/complex eigenvalue 
= real double precision 

- transient 

2.3.41.2 BDD (MATRIX) 

Description 

[B.j] - Dynamic damping matrix - d set. 

Matrix Trailer 

Number of columns = d 

Number of rows = d 

Form = square 

Type = complex double precision 

- frequency response/complex eignevalue 
= real double precision 

- transient 

2.3.41.3 MDD (MATRIX) 
Description 



[M. ,] - Dynamic mass matrix - d set. 



Matrix Trailer 




Number of columns 


= d 


Number of rows 


= d 


Form 


= Si 


Type 


= o 



square 
= complex double precision 

- frequency response/complex eigenvalue 
= real double precision 

- transient 



2.3-143 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.41.4 G^fl (MATRIX) 
Description 

[g''] - Multipoint constraint transformation matrix - dynamics, 
m 

Matrix Trailer 

Number of columns = d 

Number of rows = m 

Form = rectangular 

Type = complex double precision 

2.3.41.5 G0D (MATRIX) 
Description 

[G^l - Omitted coordinate transformation matrix - dynamics. 



Matrix Trailer 

Number of columns = d 

Number of rows = o 

Form = rectangular 

Type = complex double precision 

2.3.41.6 K2DD(MATRIX) 
Description 

[kL] - Direct input stiffness matrix - d set. 

Matrix Trailer 

Number of columns = d 

Number of rows = d 

Form = square 

Type = complex double precision 

2.3.41.7 M2DD (MATRIX) 

Description 

2 

[Mjj] - Direct input mass matrix - d set. 

Matrix Trailer 

Number of columns = d 

Number of rows = d 

Form = square 

Type = complex double precision 



2.3-144 



DATA BLOCK DESCRIPTIONS 



2.3.41.8 B2DD (MATRIX) 

Description 

2 
[B . .] - Direct input dampinq matrix - d set. 

Matrix Trailer 

Number of columns = d 

Number of rows = d 

Form = square 

Type = complex double precision 



2.3-145 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.42 Data Blocks Output From Module CEAD 



2.3,42.1 PHID (MATRIX) 



Description 



[$j] - Complex eigenvectors in the d set. 



Matrix Trailer 

Number of columns = number of eigenvalues found in CEAD 

Number of rows = d 

Form = rectangular 

Type = complex single precision 



2.3.42.2 CLAMA (TABLE) 



Description 












X - 


Compl ex 


eigenvalue 


tab' 


le. 




Table Format 












Record 




Word 




Type 


Item 













Header record 


1 




1 
2 
3-9 

10 

n-50 

51-146 




I 
I 
I 
I 

B 


0FP ID record 

90 

1006 



6 

Not defined 

Title, subtitle, and label from /OUTPUT/ 


2 




1 
2 
3 
4 
5 
6 




I 
I 
R 
R 
R 
R 


0FP data record 

Mode number 

Extraction order 

Real part of eigenvalue 

Imaginary part of einenvalue 

Im (X)|/2n 
-2*Re (X)/|Im (x) | 



Note: The 6 data words are repeated in record 2 for each 
eigenvalue found in CEAD. 

End-of-file 



Tabl 


e Trai 


le 


r 






Word 


1 


1006 




Word 


2 


= 







Word 


3 


= 







Word 


4 


= 







Word 


5 


= 


6 




Word 


6 


= 






2.3-146 



DATA BLOCK DESCRIPTIONS 



2.3.42.3 0CEIGS (TABLE). 
Description 

Complex eigenvalue summary table. 
Table Format 



Record 


1 



Word 



1 
2 
3 

4-10 

n 

12-18 



i^ 



Determinant 



12 
13 
14 
15 
16 
17 
18 



Inverse Power 



12-18 



19-50 
51-146 



B 



Item 

Header record 


1009 

1 if determinant 

2 if inverse power 


Number of eigenvalues extracted 
Depend on the method used 



Number of passes through starting points 

Number of criteria changes 

Number of starting point moves 

Number of decompositions 

Number of failures to iterate to a root 

Number of predictions outside the region 

Reason for termination 

1 - all requested roots found 

2 - out of region prediction from every 

starting point 

3 - insufficient time to extract another root 

4 - everywhere singular matrix 



Identical to words 12-18 for Inverse Power Method 

section of the 0EIGS data block output from the 

READ module (see section 2.3.30.4). 

Not defined 

Title, subtitle, label 



Record 1 will be repeated for each region for Inverse Power. 
Records 2+3 exist only when METHOD = DETM. 



1 







2 




1009 


3 




3 


4-9 







10 




6 


11-50 




Not defined 


51-146 


B 


Title, subtitle, label 



2.3-147 



DATA BLOCK AND TABLE DESCRIPTIONS 



Record Word Type Item 

Starting point number in region 

Real part of starting point 

Imaginary part of starting point 

Magnitude of startina point 

Phase of startinn point 

Scale factor (power of 10) of maanitude 

Words 1-6 are repeated for each startina point in each reqion. 

End-of-file 



1 


I 


2 


R 


3 


R 


4 


R 


5 


R 


6 


I 



Table Trailer 



Non-zero. 



2.3.42.4 PHIH (MATRIX) 

Description 

[f, ] - Complex eigenvectors in the h set. 

Matrix Trailer 

Number of columns = number of eigenvalues found in CEAD 

Number of rows = h 

Form = rectangular 

Type = complex single precision 



2.3-148 



DATA BLOCK DESCRIPTIONS 

2.3.43 Data Blocks Output From Module VDR 

2.3.43.1 0PHID (TABLE) 

Description 

Output complex eigenvectors requests (solution set, S0RT1 , complex), 

Table Format 



Record 



Notes 



Word 

1-2 

3-5 

6 

7 

1 

2 

3 

4 

5 

6-7 

8 

9 

10 

11-50 

51-82 

83-114 

115-146 

1 
2 

3-8 
9-14 



Tyge 
B 



Item 

Data block name 
Month, day, year 
Time 
1 

Device code + 10 * approach code 

1014 



Subcase number 

Mode number 

Complex eigenvalue 



Format code 

Number of words per entry in record 2 = 14. 

Not defined 

Title 

Subtitle 

Label 

10 * point ID + device code ^repeated 

Point type (for 

R(T1). R(T2), R(T3), R(R1). R(R2). R(R3)reach 

I(T1), I(T2), I(T3). I(R1). I(R2), I(R3))Doint 



Records 1 and 2 are repeated for each vector to be output. 
Device code = 



= X y output only 

)l = print 

|4 = punch 

[5 = print and punch 



Format code = 
Approach code 

Point type 



11 = real 

\2 = real /imaginary 

l3 = magnitude/phase 



(1 = grid point 

)Z = scalar point 

)3 = extra point 

(4 = modal point 



Components (words 3-14 of even numbered records) which are not in the solution set are 
replaced by an integer 1. 



2.3-149 



DATA BLOCK AND TABLE DESCRIPTIONS 



Table Trailer 
Word 1 
Word 2 
Word 3-6 



(sum of all words in even numbered records)/65536 

remainder from division above 

zero. 



2.3.43.2 (3UDVC1 (TABLE) 

Description 

Output displacement requests (solution set, S0RT1 , complex) 



Table Format 










Record 


Word 


Type 


Item 







1-2 
3-5 
6 

7 


B 


Data block name 
Month, day, year 
Time 

1 




1 


1 

2 

3 
4 
5 
6 
7 
8 
9 




Device code + 10 * approach code 

(1015 = displacement 

<1016 = velocity 

U017 = acceleration 



Subcase number 

Frequency 





Dynamic load set ID 

Format code 






10 




Number of words per entry in record 2 = 


14 




11-50 




Not defined 






51-82 


B 


Title 






83-114 


B 


Subtitle 






115-146 


B 


Label 





1 

2 

3-8 

9-14 



10 * point ID + divice code ^repeated 

Point type (for 

R(T1). R(T2), R(T3). R(R1), R(R2), R(R3)(each 

I(T1), I(T2). I(T3), I(R1), I(R2). I(R3))point 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 



2. Device code = 

3. Format code = 

4. Approach code 



'0 = X y output only 

h = print 

1 4 = punch 

^5 = print and punch 

il = real 

,2 = real/imaginery 

[3 = magnitude/phase 



2.3-150 



DATA BLOCK DESCRIPTIONS 



!iotes cont'd. 



(l = grid point 

5. Point type = {l = ^"^^^ P°i"<^ 

•'^ 13 = extra point 

(4 = modal point 

6. Components (words 3-14 of even numbered records) which are not in the solution set 
are replaced by an integer 1. 

Table Trailer 

Word 1 = (sum of all words in even numbered records )/65536. 

Word 2 = remainder from division above. 

Word 3-6 = zero. 

2.3.43.3 0UDV1 (TABLE) 

Description 

Output displacement requests (solution set, SflRTl , real). 



Table Format 




Record 


Word 





1-2 
3-5 
6 
7 



3 

4 

5 

6 

7 

8 

9 
10 

11-50 

51-82 

83-114 

115-146 

1 
2 
3-8 



h£i 



Item 

Data block name 
Month, day, year 
Time 
1 

Device code + 10 * approach code 

15 = displacement 

16 = velocity 

17 = acceleration 


Subcase number 

Time 





Dynamic load set ID 

Format code = 1 

Number of words per entry in record 2 

Not defined 

Title 

Subtitle 

Label 

10 * point ID + device code ) repeated 
Point type > for each 

Tl, T2, T3, Rl, R2. R3 } noint 



2,3-151 



DATA BLOCK AND TABLE DESCRIPTIONS 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 



Device code = 



3. Format code = 



'0 = X y output only 

h = print 

|4 = punch 

[5 = print and punch 

[1 = real 

j2 = real/imaqinary 

u = magnitude/phase 



4. Approach code = 7 

n = grid point 

n • 4. 4. ;2 = scalar point 

5. Point type = ^3 ^ ^^^^^ p^^^^ 

(4 = modal point 

6. Components (words 3-8 of even numbered records) which are not in the solution set 
are replaced by an integer 1. 

Table Trailer 

Word 1 = (sum of all words in even numbered records)/65536. 

Word 2 = remainder from division above. 

Word 3-6 = zero. 

2,3.43.4 (JPNLl (TABLE) 

Description 

Output nonlinear load requests (solution set, S0RT1 , real) 



Table Format 








Record 


Word 


Type 


Item 





1-2 


B 


Data block name 




3-5 




Month, day, year 




6 




Time 




7 




1 


1 


1 




Device code + 10 * approach code 




2 




12 




3 









4 




Subcase number 




5 


R 


Time 




6 









7 









8 




Dynamic load set ID 




9 




Format code 




10 




Number of words per entry in record 2 




11-50 




Not defined 




51-82 


B 


Title 




83-114 


B 


Subtitle 




115-146 


B 


Label 



2.3-152 



DATA BLOCK DESCRIPTIONS 



Record 



Word 

1 
2 
3-8 



Jl21 

I 
I 
R 



rtem+ 

10 * point ID + device code] repeated 
Point type > for each 

Tl, T2, T3, R1, R2. R3 ) point 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 

2. Device code = 



10 = X y output only 

)l = print 

j4 = punch 

V5 = print and punch 



Format code = 
Approach code 



5. Point type 



(1 = real 

^2 = real/imaginary 

(3 = magnitude/phase 



il = qrid point 

)2 = scalar point 

13 = extra point 

U = modal point 



6. Components (words 3-8 in even numbered records) which are not in the solution set 
are replaced by an integer 1. 



Table Trailer 



Word 1 = (sum of all words in even numbered records )/65536. 
Word 2 = remainder from division above. 
Word 3-6 = zero. 



2.3.43.5 0PHIH (TABLE) 

Description 

Output complex eigenvector requests (solution set, SpRTl , complex) 

Table Format 

Record Word Type 







1-2 
3-5 
6 
7 
1 
2 
3 
4 
5 

6-7 
8 
9 
10 



B 



Item 

Data block name 

Month, day, year 

Time 

1 

Device code + 10 * approach code 

1014 



Subcase number 

Mode number 

Complex eigenvalue 



Format code 

Number of words per entry in record 2 = 14 



2,3-153 



DATA BLOCK AND TABLE DESCRIPTIONS 



Record 



Word 

n-50 

51-82 

83-114 

115-146 

1 
2 

3-8 
9-14 



Tffie 



Item 

Not defined 
Title 
Subtitle 
Label 

10 * point ID + device code Jrepeated 

Point type (for 

R(T1), R(T2), R(T3), R(R1), R(R2), R(R3)/each 

I(T1). I(T2), I(T3), I(R1). I(R2). I(R3)\point 



Notes 



1 . Records 1 and 2 are repeated for each vactor to be output 



Device code 



3. Format code 



fO = X y output only 

11 = print 

U = punch 

[s = print and punch 

(1 = real 

Iz = real/imaqinary 

(3 = magnitude/phase 



4. Approach code = 9 

5. Point type 



1 = grid point 

2 = scalar point 

3 = extra point 
,4 = modal point 



6. Components (words 3-14 of even numbered records) which are not in the solution set 
are replaced by an integer 1. 

Table Trailer 

Word 1 = (sum of all words in even numbered records )/65536. 

Word 2 = remainder from division above. 

Word 3-6 = zero. 

2.3.43.6 0UHVC1 (TABLE) 

Description 

Output displacement requests (solution set, S0RT1 , complex). 



2.3-154 



DATA BLOCK DESCRIPTIONS 



Table Format 



Record 



Notes 



Word 

1-2 

3-5 

6 

7 

1 

2 

3 

4 

5 

6 

7 

8 

9 

10 

11-50 

51-82 

83-114 

115-146 

1 
2 

3-8 
9-14 



B 



Item 

Data block name 
Month, day, year 
Time 
1 

Device code + 10 * approach code 
'1015 = displacement 

1016 = velocity 

1017 = acceleration 


Subcase number 

Frequency 





Dynamic load set ID 

Format code 

Number of words per entry in record 2=14 

Not defined 

Title 

Subtitle 

Label 

10 * point ID + device code ^repeated 

Point type (for 

R(T1). R(T2), R(T3). R(R1). R(R2), R(R3)^each 

I(T1). I(T2), I(T3). I(R1). I(R2), I(R3))point 



1. Records 1 and 2 are repeated for each vector to be output. 



2. Device code = 

3. Format code = 

4. Approach code = 

5. Point type 



= X y output only 

1 = print 
I 4 = punch 

,5 = print and punch 

'1 = real 

2 = real/imaginary 
.3 = magnitude/phase 



1 = qrid point 

12 = scalar point 

13 = extra point 
,4 = modal point 



Components (words 3-14 of even numbered records) which are not in the solution set 
are replaced by an integer 1. 



Table Trailer 
Word 1 
Word 2 
Word 3-6 = 



(sum of all words in even numbered records )/65536. 

remainder from division above. 

zero. 



2.3-155 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.43.7 0UHV1 (TABLE) 

Description 

Output displacement requests (solution set, S^RTl , real). 



Table Format 



Record 



Word 

1-2 
3-5 
6 
7 

1 



3 

4 

5 

6 

7 

8 

9 
10 

11-50 

51-82 

83-114 

115-146 

1 
2 
3-8 



IZEl 



Item 

Data block name 
Month, day, year 
Time 
1 



Device code + 10 * approach code 

15 = displacement 

16 = velocity 

17 = acceleration 


Subcase number 

Time 





Dynamic load set ID 

Format code = 1 

Number of words ner entrv in record 2 

Not defined 

Title 

Subtitle 

Label 



10 * point ID + device code f repeated 
point type { for each 

Tl, T2, T3, Rl, R2, R3 (point 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 



Device code 



Format code = 



'0 = X y output only 

h = print 

1 4 = punch 

5 = print and punch 

(1 = real 

1 2 = real /imaginary 

(3 = maqnitude/phase 



Approach code = 7 



5. Point type 



il = grid point 

)2 = scalar point 

)3 = extra point 

[4 = modal point 



5. Components (words 3-8 of even numbered records) which are not in the solution set 
are replaced by an integer 1 . 



2.3-156 



DATA BLOCK DESCRIPTIONS 



Table Trailer 



Word 1 = (sum of all words in even numbered records)/65536. 
Word 2 = remainder from division above. 
Word 3-6 = zero. 



2.3-157 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.44 Data Blocks Output From Module FRRD 

2.3.44.1 UDVF (MATRIX) 
Description 

[Uj] - Displacement vector matrix in a frequency response problem - d set. 
Matrix Trailer 



Number of columns = number of frequencies multiplied by the number of loads 

Number of rows = d 

Form = rectangular 

Type = complex sinqle precision 

2.3.44.2 PSF (MATRIX) 
Description 

[P ] - Load vector for frequency response - s set. 

Matrix Trailer 

Number of columns = number of frequencies multiplied by the number of loads 

Number of rows = s 

Form = rectangular 

Type = complex single precision 

2.3.44.3 PDF (MATRIX) 
Description 

{Pj} - Dynamic load matrix for frequency analysis - d set. 

Matrix Trailer 

Number of columns = number of frequencies multiplied by the number of loads 

Number of rows = d 

Form = rectangular 

Type = complex sinqle precision 

2.3.44.4 PPF (MATRIX) 
Description 

[P ] - Dynamic loads for frequency response - p set. 

Matrix Trailer 

Number of columns = number of frequencies multiplied by the number of loads 

Number of rows = p 

Form = rectangular 

Type = complex single precision 



2.3-158 



DATA BLOCK DESCRIPTIONS 

Note 

The header record contains the list of frequencies. 

2.3.44.5 UHVF (MATRIX) 
Description 

[u, ] - Modal frequency response solution vectors - h set. 

Matrix Trailer 

Number of columns = number of frequencies multiplied by the number of loads 

Number of rows = h 

Form = rectangular 

Type = complex single precision 



2,3-159 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.45 Data Blocks Output From Module SDR3 . 

2.3.45.1 0PP2 (TABLE) 

Description 

Output load vector requests (p set, S0RT2, real), 
Table Format 



Record 

1 



Word 



1 

2 

3 

4 

5 

6 

7 

8 

9 
10 

11-50 

51-82 

83-114 

115-146 

1 
2 
3-8 



Type 



Item 



Header record 



Device code + 10*approach code 

2002 



Subcase number 

10*point ID + device code 





Dynamic load set ID 

Format code = 1 

Number of words per entry in next record = 8 

Hot defined 

Title 

Subtitle 

Label 

Time ) repeat 

Point tyoe >for each 

R(T1), R(T2), R(T3), ^(Rl), R(R2), R(R3))t1me step 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 

2. Device code = 



fO = X y output only 
)l = print 
)4 = punch 



Format code = 



(5 = print and punch 

(1 = real 

2 = real/imaginary 

(3 = magnitude/phase 



4. Approach code = 6 

5. Point type 



1 = grid point 

2 = scalar point 

3 = extra point 

4 = modal point 



Table Trailer 



Words 1-6 contain no significant values. 



2.3-160 



DATA BLOCK DESCRIPTIOUS 

2.3.45.2 0QP2 (TABLE). 
Description 

Output forces of single-point constraint (p set, S0RT2, real). 
Table Format 



Record 

1 



Word 



1 

2 

3 

4 

5 

6 

7 

8 

9 

10 

11- 

51- 

83- 

115- 



I/Ei 



Item 



50 
82 
114 

145 



1 
2 
3-8 



Header record 



Device code + 10*approach code 

2003 



Subcase number 

10*point ID + device code 





Dynamic load set ID 

Format code = 1 

Number of words oer entry in next record = 8 

Not defined 

Title 

Subtitle 

Label 

Time ^repeat 

Point type >for each 

R(T1), R(T2), R(T3), R(R1), R(R2), R(R3)) time step 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 



2. Device code = 

3. Format code = 

4. Approach code 

5. Point type = 



fo = X y output only 

)1 = print 

)4 = punch 

[5 = print and punch 

1 = real 

2 = real /imaginary 

3 = magnitude/phase 



il = grid point 
2 = scalar point 
3 = extra point 
4 = modal point 



Table Trailer 



Words 1-6 contain no significant values. 



2.3-161 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.45.3 0UPV2 (TABLE). 
Description 

Output displacement vector requests (p set, S!?RT2, real). 
Table Format 



Record 


Word 


Type 


Item 











Header record 


1 


1 




I 


Device code + 10*approach code 
(2001 = Displacement 




2 




I 


^2010 = Velocity 
(2011 = Acceleration 




3 




I 







4 




I 


Subcase number 




5 




I 


10*point ID + device code 




6 




I 







7 




I 







8 




I 


Dynamic load set ID 




9 




I 


Format code = 1 




10 




I 


Number of words per entry in next record = 8 




11- 


50 




Not defined 




51- 


82 


B 


Title 




83- 


114 


B 


Subtitle 




115- 


145 


B 


Label 


2 


1 




R 


Time ^reoeat 




2 




I 


Point tyoe Uor each 




3- 


8 


R 


R(T1), R(T2), R(T3), R(R1), R{R2), R(R3)) time steo 



Notes 



1 . Records 1 and 2 are repeated for each vector to be output. 



2. Device code = 

3. Format code = 

4. Approach code 

5. Point type 



fO = X y output only 

)1 = print 

1 4 = punch 

,5 = print and punch 

(1 = real 

2 = real /imaginary 

(3 = magnitude/phase 



h = grid point 

)2 = scalar point 

)3 = extra point 

'4 = modal point 



Table Trailer 



Words 1-6 contain no significant values. 



2.3-162 



DATA BLOCK DESCRIPTIONS 



2.3.45.4 i3ES2 (TABLE). 
Description 

Output element stress requests (S0RT2, real). 
Table Format 



Record 


Word 


Type 


Item 









Header record 


1 


1 




Device code + 10*approach code 




2 




2005 




3 




Element type 




4 




Subcase number 




5 




10*element ID + device code 




6 









7 









8 




Dynamic load set ID 




9 




Format code = 1 




10 




Number of words per entry in next record = NMDS 




11-50 




Not defined 




51-82 


B 


Title 




83-114 


B 


Subtitle 




115-146 


B 


Label 


2 


1 


R 


Time ) repeat 




2-NWDS 


Mixed 


Element stress data >for each 



See section 2.3.51 for details) time step 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 



Device code = 



Format code = 



[0 = X y output only 

h = print 

1 4 = punch 

^5 = print and punch 

(1 = real 

<2 = real /imaginary 

(3 = magnitude/phase 



4. Approach code = 6 



Table Trailer 



Words 1-6 contain no significant values. 



2.3-163 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.45.5 0EF2 (TABLE). 






Description 






Output element force reqi 


jests 


(S0RT2, real) 


Table Format 






Record Word 




Type 









1 1 






2 






3 






4 






b 






5 






7 






8 






9 






10 






11-50 






51-82 




B 


83-114 




B 


115-146 




B 



Item 



Header record 



Device code + 10*approach code 

2004 

Element type 

Subcase number 

10*element ID + device code 





Dynamic load set ID 

Format code = 1 

Number of words per entry in next record = NWDS 

Not defined 

Title 

Subtitle 

Label 



Notes 



1 R Time ) reoeat 

2-NWDS Mixed Element force data >for each 

See section 2.3.52 for details) time step 



1. Records 1 and 2 are repeated for each vector to be output. 



Device code = 



3. Format code = 



(O = \ y output only 

) 1 = print 

)4 = punch 

^5 = print and punch 



1 = real 

2 = real /imaginary 

3 = magnitude/phase 



4. Approach code = 6 
Table Trailer 

Words 1-6 contain no significant values. 



2.3-164 



DATA BLOCK DESCRIPTIONS 

2.3.45.6 0PNL2 (TABLE). 
Description 

Output nonlinear load requests (solution set, S0RT2, real] 
Table Format 



Record 

1 



Word 



1 




2 




3 




4 




5 




5 




7 




8 




9 




10 




11- 


50 


51- 


82 


83- 


114 


115- 


146 


1 




2 




3- 


8 



IZ£e 



Item 



Header record 



Device code + 10*apnroach code 

2012 



Subcase number 

10*Doint ID + device code 





Dynamic load set ID 

Format code = 1 

Number of v/ords per entry in next record = 8 

Not defined 

Title 

Subtitle 

Label 

Time ^repeat 

Point type Vfor each 

R(T1), R(T2), R(T3). R(R1), R(R2), R(R3)) time step 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 



2. Device code 



Format code 



|0 = X y output only 

1 = print 

1 4 = punch 

^5 = print and punch 

[1 = real 

,2 = real /imaginary 

[3 = magnitude/phase 



4. Approach code = 6 

5. Point type 



1 = grid point 

2 = scalar point 

3 = extra point 
.4 = modal point 



6. Components (words 3-8 in even numbered records) which are not in the solution set are 
replaced by integer 1 . 



Table Trailer 



Words 1-5 contain no significant values. 



2.3-165 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.45,7 0UDV2 (TABLE). 
Description 

Output displacement vector requests (solution set, S0RT2, real). 
Table Format 



Record 


Word 


I^ 









1 


1 


I 




2 


I 




3 


I 




4 


I 




5 


I 




6 


I 




7 


I 




8 


I 




9 


I 




10 


I 




11-50 






51-82 


B 




83-114 


B 




115-146 


B 


2 


1 


R 




2 


I 




3-8 


R 



Item 



Header record 



Device code + 10*approach code 
'2015 = Displacement 

2016 = Velocity 

2017 = Acceleration 


Subcase number 

10*point ID + device code 





Dynamic load set ID 

Format code = 1 

Number of words per entry in next record = 8 

Not defined 

Title 

Subtitle 

Label 



Time ) repeat 

Point type Vfor each 

R(T1), R(T2), R(T3), R(R1), R(R2), R(R3)I time steo 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 

iO = X y output only 
J : KnS 
5 = print and punch 

(l = real 
3. Format code = s2 = real /imaginary 
(3 = magnitude/phase 



4. Approach code = 6 

5. Point type = 



1 = grid point 

2 = scalar point 

3 = extra point 

4 = modal point 



6. Components (words 3-8 of even numbered records) which are not in the solution set are 
replaced by integer 1. 



Table Trailer 



Words 1-5 contain no significant values. 



2.3-166 



DATA BLOCK DESCRIPTIONS 

2.3.45.8 0UHV2 (TABLE). 
Description 

Output displacement vector requests (solution set, S!3RT2, real). 
Table Format 



Record 

1 



Word 



1 




2 




3 




4 




5 




6 




7 




8 




9 




ID 




n- 


■50 


51- 


■82 


83- 


■114 


115- 


■146 


1 




2 




3- 


■8 



I 

I 

I 
I 
I 
I 
I 
I 
I 



Item 



Header record 



Device code + 10*anDroach code 

2015 = DisDlacement 

2016 = Velocity 

2017 = Acceleration 


Subcase number 

10*point ID + device code 





Dynamic load set ID 

Format code = l 

Number of words per entry in next record = 8 

Not defined 

Title 

Subtitle 

Label 



Time ^repeat 

Point type >for each 

R(T1), R(T2), R(T3), R(R1), R(R2), R(R3))time sten 



Notes 



1. Records 1 and 2 are repeated for each vector to be cutout. 



2. Device code = 

3. Format code = 

4. Approach code 

5. Point type 



(0 = X y output only 

h = print 

|4 = punch 

^5 = print and punch 

(1 = real 

(2 = real/imaginary 

(3 = magnitude/phase 



n = grid point 

12 = scalar point 

J3 = extra point 

(.4 = modal point 



6. Components (words 3-8 of even numbered records) which are not in the solution set are 
replaced by an integer 1. 



Table Trailer 



Words 1-6 contain no significant values. 



2.3-167 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.45.9 0PPC2 (TABLE). 
Description 

Output load vector requests (p set, S0RT2, complex). 
Table Format 



Record 


Word 


Type 


Item 









Header record 


1 


1 




Device code + 10*approach code 




2 




3002 




3 









4 




Subcase number 




5 




10*point ID + device code 




6 









7 









8 









9 




Format code 




10 




Number of words per entry in next record = 14 




11-50 




Not defined 




51-82 


B 


Title 




83-114 


B 


Subtitle 




115-145 


B 


Label 


2 


1 


R 


Frequency ^reoe 




2 


I 


Point type (for 




3-8 


R 


R(T1), R(T2). R{T3), R(R1), R(R2), R(R3)?each 




9-14 


R 


I(T1). I(T2). I{T3). I(Rl). I{R2). IfR3)Jfrea 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 



2. Device code = 

3. Format code = 

4. Approach code = 

5. Point type = 



'0 = X y output only 

' 1 = print 

1 4 = punch 

,5 = print and punch 

(1 = real 

2 = real/imaginary 

(3 = magnitude/phase 



p = grid point 

|2 = scalar point 

k3 = extra point 

(4 = modal point 



Table Trailer 



Words 1-G contain no significant values. 



2,3-168 



DATA BLOCK DESCRIPTIONS 

2.3.45.10 0QPC2 (TABLE). 
Description 

Output forces of single-point constraint requests (p set, S0RT2, complex). 
Table Format 



Record 

1 



Word 



1 

2 

3 

4 

5 

6 

7 

8 

9 

10 

n-50 

51-82 

83-114 

115-146 

1 

2 

3-8 

9-14 



L^e 



Item 



Header record 



Device code + 10*approach code 

3003 



Subcase number 

10*point ID + device code 





Load set ID 

Format code 

Number of words per entry in next record = 14 

Not defined 

Title 

Subtitle 

Label 

Frequency ^ repeat 

Point type (for 

R(T1), R(T2), R(T3), R(R1), R(R2), R(R3)?each 

I(T1), I(T2). I(T3), I(R1), I(R2), I{R3))frequency 



Notes 



1. Records 1 and 2 are repeated for each vector to be outnut. 



2. Device code = 



Format code = 



5. Point type 



fO = X y output only 

'] = print 

|4 = punch 

[s = print and punch 

p = real 

2 = real /imaginary 

'3 = magnitude/phase 



4. Approach code = 5 



n = grid point 

'2 = scalar point 

|3 = extra point 

'4 = modal point 



Table Trailer 



Words 1-6 contain no significant values. 



2.3-169 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.45.n 0UPVC2 (TABLE). 
Description 

Output displacement vector requests (p set, S(3RT2, complex). 
Table Format 



Record 



Word 



Tj^ 



Item 



Header record 



3 




4 




5 




6 




7 




8 




9 




10 




11-50 




51-82 


B 


83-114 


B 


115-146 


B 


1 


R 


2 


I 


3-8 


R 


9-14 


R 



Device code + 10*approach code 
3001 = Displacement 

3010 = Velocity 

3011 = Acceleration 


Subcase number 

10*point ID + device code 





Load set ID 

Format code 

Number of words per entry in next record = 14 

Not defined 

Ti tl e 

Subtitle 

Label 



Frequency \repeat 

Point type (for 

R(T1), R(T2), R(T3), R(R1), R(R2), R(R3)reach 

I{T1), I(T2). I(T3). I(R1), I{R2). I(R3))frequency 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 



2. Device code = 

3. Format code = 

4. Approach code 

5. Point type 



= X y output only 

1 1 = print 

I 4 = punch 

^5 = print and punch 

p = real 

J 2 = real /imaginary 

(3 = magnitude/phase 



' 1 = grid point 

12 

13 

U = modal point 



= 

)2 = scalar point 

)3 = extra point 

U = 



Table Trailer 



Words 1-6 contain no significant values. 



2.3-170 



DATA BLOCK DESCRIPTIONS 



2.3.45.12 0ESC2 (TABLE). 
Description 

Output element stress requests (S0RT2, complex), 
Table Format 



Record 


Word 


Type 


Item 











Header record 




1 


1 
2 
3 
4 
5 
6 
7 
8 
9 




Device code + 10*approach code 

3005 

Element type 

Subcase number 

10*Element ID + device code 





Load set ID 

Format code 






10 




Number of words per entry in next record = 


= NWDS 




11-50 




Not defined 






51-82 


B 


Title 






83-114 


B 


Subtitle 






115-146 


B 


Label 




2 


1 


R 


Frequency ] repeat 






2-NWDS 


Mixed 


Element stress data >for each 





See 2.3.51 for details ) frequency 



Notes 



1. Records 1 and 2 are repeated for each vector to be outout. 



Device code = 



Format code 



fO = X y output only 

1 1 = print 

14 = punch 

^5 = print and punch 

(l = real 

\2 = real /imaginary 

(.3 = magnitude/phase 



4. Approach code = 5 
Table Trailer 

Words 1-6 contain no significant values. 



2.3-171 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.45.13 0EFC2 (TABLE). 
Description 

Output element force requests (Sj>RT2, complex). 
Table Format 



Record 


Word 


Type 


Item 











Header record 




1 


1 
2 
3 
4 
5 
6 
7 
8 
9 




Device code + 10*aDnroach code 

3004 

Element type 

Subcase number 

10*element ID + device code 





Load set ID 

Format code 






10 




Number of words per entry in next record = 


= NMDS 




n-50 




Not defined 






51-82 


B 


Title 






83-114 


B 


Subtitle 






115-146 


B 


Label 




2 


1 
2-NWDS 


R 
Mixed 


Frequency ) repeat 
Element force data >for each 





See 2.3.52 for details ) frequency 



Notes 



Records 1 and 2 are repeated for each vector to be output. 
2. Device code = 



[0 = X y output only 

M = print 

I 4 = punch 

' 5 = print and punch 



(1 = real 

3. Format code = <2 = real /imaginary 

(3 = magnitude/phase 

4. Approach code = 5 
Table Trailer 

Words 1-6 contain no significant values. 



2.3-172 



DATA BLOCK DESCRIPTIONS 

2.3.45.14 0UDVC2 (TABLE). 
Description 

Output displacement vector requests (solution set, S0RT2, complex). 
Table Format 



Record 

1 



Word 



J^l£e 



Item 



3 




4 




5 




5 




7 




8 




9 




10 




11-50 




51-82 


B 


83-114 


B 


115-146 


B 


1 


R 


2 


I 


3-8 


R 


9-14 


R 



Header record 



Device code + 10*approach code 
'3015 = Displacement 

3016 = Velocity 

3017 = Acceleration 


Subcase Number 

10*point ID + device code 





Dynamic load set ID 

Format code 

Number of words per entry in next record = 14 

Not defined 

Title 

Subtitle 

Label 



Frequency \ repeat 

Point type (for 

R(T1), R(T2). R(T3), R(R1), R(R2), R(R3)(each 

I(T1), I(T2), I(T3), I(R1), I(R2), I(R3))frequency 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 

10 = X y output only 

I = EuicJ 

5 = print and punch 

(l = real 

3. Format code = V = real/imaginary 

(3 = magnitude/phase 



4. Approach code = 5 

5. Point type 



rl = grid point 

\2 = scalar point 

1 3 = extra point 

1 4 = modal point 



6. Components (words 3-14 of even numbered records) which are not in the solution set are 
replaced by integer 1 . 



Table Trailer 



Words 1-6 contain no significant values. 



2.3-173 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.45.15 i3UHVC2 (TABLE). 
Description 

Output displacement vector requests (solution set, Si8RT2, complex). 
Table Format 



Record 


Word 


liJ 









1 


1 


I 




2 


I 




3 


I 




4 


I 




5 


I 




6 


I 




7 


I 




8 


I 




9 


I 




10 


I 




n-50 






51-82 


B 




83-114 


B 




115-146 


B 


2 


1 


R 




2 


I 




3-8 


R 




9-14 


R 



Item 



Header record 



Device code + 10*approach code 
'3015 = DisDlacement 

3016 = Velocity 

3017 = Acceleration 


Subcase number 

10*point ID + device code 





Dynamic load set ID 

Format code 

Number of words per entry in next record = 14 

Not defined 

Title 

Subtitle 

Label 

Frequency v repeat 

Point type (for 

R(T1). R(T2), R(T3), R(R1), R(R2), R(R3)(each 

I(T1). I(T2), I(T3), I(R1), I(R2), I (R3)) frequency 



Notes 



1. Records 1 and 2 are repeated for each vector to be output. 

!0 = X y output only 

1 : JInS 

5 = print and punch 

(1 = real 

3. Format code = \Z = real /imaginary 

(3 = magnitude/ phase 



4. Approach code = 5 

5. Point type = 



1 = grid point 

2 = scalar point 

3 = extra point 

4 = modal point 



6. Components (words 3-14 of even numbered records) which are not in the solution set are 
replaced by an integer 1. 



Table Trailer 



Words 1-6 contain no significant values. 



2.3-174 



DATA BLOCK DESCRIPTIONS 

2.3.46 Data Blocks Output From Module XYTRAN . 

2.3.46.1 XYPLTT (TABLE). 

Description 

Output plot request data in form for direct plotting of S0RT2 Transient Response output. 
Table Format 



Record 


1 



Word 



10 

11 

12 

13 

14 

15 

16 

17 



1121 



I-R 



Item 



R 
R 
R 
R 
R 
R 



19 


I 


20 


I 


21 


I 


22 


I 


23 


R 


24 


R 


25 


I 


26 


I 


27 


I 


28 


I 


29 


I 


30 


I 



Header record 



Subcase ID or if a Random Response problem, 

the Mean Response 

Frame number 

Curve number 

Point ID or element ID 

Component number 

Vector number (1, 2, ... 11) 
1 --Graph uses top half of frame 
0--Graph uses full frame 

-1--Graph uses lower half of frame 

0--Axis, tics, labels, values, etc. have been 
drawn and this curve is to be scaled and 
plotted identically as last except for curve 
symbol s . 

1--Axis, tics, labels, scaling, etc. are to be 
performed or computed and if word 7 of this 
record = or 1 , a skio to new frame is to be 
made. 

Number of blank frames between frames (frame- 
skip) 

Not used 

XMIN ) 

XMAN ( Define exact corners of this 

YMIN ( uoper, lower, or full frame graoh 

YMAX ) 

Actual value of first tic 

Actual increment ':o succ? 

tics 

Integer value to be printed on 

first tic 

Maximum number of digits in 

any print- value 

+ or - power for print values 

Total number of tics to nrint 

this edge 

Value print skio 0,1,2,3 — 

Delta integer print value to 

successive tics 



Same as 15 through 22 
But for y-direction tics 



:S'V 



x-di recti on 
tics 



2.3-175 



31 




32 




33 




34 




35 





38 


R 


39 


I 


40 


R 


41 


I 



DATA BLOCK AND TABLE DESCRIPTIONS 



Record Word Type Item 

Top edge tics ^each of 31-34 may be less 
Bottom edge ticsfthan 0--tics without values 
Left edge tics ^equal to 0— no tics here 
Right edge tics 'greater 0--tics with values 
0--x-di recti on is linear 

Greater than 0— number o^ cycles and x-direction 
is logarithmic 

36 I 0--y-direction is linear 

Greater than 0--number of cycles and y-direction 
is logarithmic 

37 I 0--no X-axis 

l--draw X-axis 
X-axis y-intercept 
0--no y-axis 
l--draw y-axis 
y-axis x-intercept 
Less than — plot symbol for each curve point. 

Select symbol corresponding to 
curve number in word 3 of this 
record. 
Equal to -- connect points by lines where 
points are continuous i.e., (no 
integer 1 pairs) . 
Greater than -- do both of above. 
42 \ 

/Not used 

50 ^ 

51 B Title (32 words) 
B Subtitle (32 words) 
B Label (32 words) 
8 Curve Title (32 words) 
B X-axis Title (32 words) 

242 B y-axis Title (32 words) 

243 ^ 

>Not used 

282 ) 

283 I Pensize 

284 I Plotter 1 = SC4020, 2 = EAI3500 

285 R Inches paper x-direction 

286 R Inches paper y-direction 

287 I Camera for SC4020 less than = 35mm, = F80, 

Greater = Both 

288 I Print flag ) 

289 I Plot flag > = no, 1 = yes 

290 I Punch flag ) 

291 R x-min of all data 

292 R x-max of all data 

293 R y-min within x-limits of graph 

294 R x- value at this y-min 

295 R y-max within x-limits of graph 

296 R x-value at this y-max 

297 R y-min for all data 

298 R x-value at this y-min 

299 R y-max for all data 

300 R x-value at this y-max 



2.3-176 



DATA BLOCK DESCRIPTIONS 



Record 



Word 

1 
2 
3 
4 



Type 

I 
I 
R 
R 



Item 



1 [ Always is present 

x-value ) coordinate pair 

y-value / repeats for all pairs plotted 



Notes 



1. Records 1 and 2 repeat for each curve plotted. 

2. Even numbered records will contain integer 1 pairs to indicate where curve has moved 
outside of graph limits. 



Table Trailer 



Words 1-6 contain no significant values. 



2.3-177 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.45.2 XYPLTFA (TABLE). 
Description 

Identical to XYPLTT, for Frequency Response plots (solution set). 

2.3.46.3 XYPLTF (TABLE). 
Description 

Identical to XYPLTT, for Frequency Response plots. 

2.3.46.4 XYPLTR (TABLE). 
Description 

Identical to XYPLTT, for Random Response plots. 

2.3.46.5 XYPLTTA (TABLE). 
Description 

Identical to XYPLTT, for Transient Response plots (solution set). 



2.3-178 



DATA BLOCK DESCRIPTIONS 



2.3.47 Data Blocks Output From Module RAND0M 

2.3.47.1 PSDF (TABLE) 

Description 

Power Spectral Density Table. 



Table Format 








Record 


Word 


Type 


Item 









Header record 


1 


1 


I 


50 




2 


I 


Code for data type 
DISP = 2001 
VELi? = 2010 
ACCE = 2011 
LS3AD = 2002 
SPCF = 2003 
ELF0 = 2004 
STRE = 2005 




3 




4001 




4 









5 




Point or element ID times 10 




6 




Component ID + 2 




7 









8 


R 


Mean response 




9 









10 




2 




11-50 









51-146 


B 


Title, subtitle, label 


2 


1 


R 


Frequency 




2 


R 


Power spectral dens it v 



Notes 

1. Words 1 and 2 of record 2 are repeated for each frequency. 

2. Records 1 and 2 are repeated for each power spectral density request. 

Table Trailer 

Words 1-5 = zero. 

Word 6 = number of requests. 



2.3-179 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.47.2 AUTI9 (TABLE). 








Description 












Autocorrel 


ation 


function 


table. 






Table Format 












Record 




Word 


Type 


Item 













Header record 




1 




1 


I 


50 








2 


I 


Code for data type 










DISP = 2001 












VEL0 = 2010 












ACCE = 2011 












L0AD = 2002 












SPCF = 2003 












ELF0 = 2004 












STRE = 2005 








3 




4002 








4 













5 




Point or element 


ID times 10 






6 




Component ID + 2 








7 













8 




Mean response 








9 













10 




2 








11-50 













51-146 


B 


Title, subtitle. 


label 


2 




1 


R 


TAU 








2 


R 


Auto correlation 


function 



Notes 



1. Words 1 and 2 of record 2 are repeated for each TAU. 

2. Records 1 and 2 are repeated for each autocorrelation request. 



Table Trailer 



Words 1-5 = zero. 

Word 6 = number of requests. 



2.3-180 



DATA BLOCK DESCRIPTIONS 

2.3.48 Data Blocks Output From Module TRD . 

2.3.48.1 UDVT (MATRIX) 
Description 

[Uj] - Displacement, velocity, and acceleration vector matrix in a transient analysis 
problem - d set. 

Matrix Trailer 

Number of columns = three times the number of output time steps 

Number of rows = d 

Form = rectangular 

Type = real single precision 

2.3.48.2 PDT (MATRIX) 
Description 

[Pj] - Linear dynamic load matrix for transient analysis - d set. 

Matrix Trailer 

Number of columns = number of output times 

Number of rows = d 

Form = rectangular 

Type = real single precision 

2.3.48.3 PST (MATRIX) 
Description 

[Pj] - Linear load vector for transient analysis - s set. 

Matrix Trailer 

Number of columns = number of output times 

Number of rows = s 

Form = rectangular 

Type = real single precision 



2.3-181 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.3.48.4 PPT (MATRIX) 
Description 

[P^] - Linear dynamic loads for transient analysis - p set. 

Matrix Trailer 

Number of columns = number of output times 

Number of rows = p 

Form = rectangular 

Type = real single precision 

*Note: The header record contains the list of output times. 

2.3.48.5 PNLD (MATRIX) 
Description 

Matrix Trailer 



[p"^] - Nonlinear loads in transient problem - d set. 



Number of columns = number of output times 

Number of rows = d 

Form = rectangular 

Type = real single precision 



2.3.48.6 UHVT (MATRIX) 
Description 

[uu] - Modal transient solution vectors - h set. 

Matrix Trailer 

Number of columns = three times the number of output times 

Number of rows = h 

Form = rectangular 

Type = real single precision 



2.3.48.7 PNLH (MATRIX) 
Description 

[Pu'''] - Nonlinear loads in modal transient problem - h set. 

Matrix Trailer 

Number of columns = number of output times 

Number of rows = h 

Form = rectangular 

Type = real single precision 



2.3-182 



DATA BLOCK DESCRIPTIONS 



2.3.49 Data Blocks Output From Module GKAH 

2.3.49.1 MHH (MATRIX) 

Description 

[iHuu] - Modal mass matrix - h set. 

Matrix Trailer 

Number of columns = h 

Number of rows = h 

Form = symmetric 

Type = real double precision 

2.3.49.2 BHH (MATRIX) 

Description 

[b, , ] - Modal damping matrix - h set. 

Matrix Trailer 

Number of columns = h 

Number of rows = h 

Form = symmetric 

Type = real double precision 

2.3.49.3 KHH (MATRIX) 

Description 

[k^^] - Modal stiffness matrix - h set. 

Matrix Trailer 

Number of columns = h 

Number of rows = h 

Form = synmetric 

Type = real double precision 

2.3.49.4 PHIDH (MATRIX) 

Description 

[*(jl,] - Transformation matrix from d set to modal coordinates. 

Matrix Trailer 

Number of columns = h 

Number of rows = d 

Form = rectangular 

Type = real single precision 



2.3-183 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.50 Data Blocks Output From Module DDR1 

2.3.50.1 CPHID (MATRIX) 

Description 

[$.] - Complex eigenvector matrix transformed from modal to physical coordinates. 

Matrix Trailer 

Number of columns = number of eigenvectors 

Number of rows = d 

Form = rectangular 

Type = complex single precision 

2.3.50.2 UDVIF (MATRIX) 
Description 

[ut] - Displacement vectors matrix in a frequency response problem - d set. 

Matrix Trailer 

Number of columns = number of frequencies times number of loads 

Number of rows = d 

Form = rectangular 

Type = complex single precision 

2.3.50.3 UDV2F (MATRIX) 



Description 

[Uj] - Displacement vectors matrix in a transient response problem - d set. 

Matrix Trailer 

Number of columns = number of output times multiplied by 3 

Number of rows = d 

Form = rectangular 

Type = real single precision 



2.3-184 



DATA BLOCK DESCRIPTIONS 



2.3.51 Element Stress Output Data Description . 

Note particular data block liescription (e.g., 0ES1, 0ESB1) for contents of word 1 for each element. 



Element 
Type Name 



1 



CR0D 



CBEAM 



CTUBE 
CSHEAR 

CTWIST 

CTRIAl 



Real Element Stresses 
Word or 
Component Item 



2 
3 

4 
5 

2 
3 
4 
5 
6 
7 
8 
9 
10 

n 

12 
13 
14 



2 

3 

4 

5 

6 

7 

8 

9 

10 

11 

12 

13 

14 

15 

16 

17 



Axial 

Axial Safety Margin * 

Torsional 

Torsional Safety Margin* 

SAl 

SA2 

SA3 

Axial 

SA-maximum 

SA-minimum 

Safety Margin in Tension* 

SBl 

SB2 

SB3 

SB-maximum 

SB-minimum 

Safety Margin in Comp* 

Same as CR0D 

Maximum Shear 
Average Shear 
Safety Margin* 



Maximum 
Average 
Safety Margin* 



Zl = Fibre Distance 1 

Normal -x at Zl 

Normal -y at Zl 

Shear-xy at Zl 

0-Shear Angle at Zl 

Major-Principal at Zl 

Minor-Principal at Zl 

Max-Shear at Zl 
Z2 = Fibre Distance 2 

Normal -X at Z2 

Normal -y at Z2 

Shear-xy at Z2 

0-Shear Angle at Z2 

Major-Principal at Z2 

Minor-Principal at Z2 

Maximum-Shear at Z2 



Complex Element Stresses 
Word or Real 

Component Item Imag. 



2 
3 

4 
5 

2 
3 
4 
5 

2 

3 

4 

5 

6 

7 

8 

9 

10 

11 

12 

13 

14 

15 



Axial 
Axial 
Torsional 
Torsional 

Undefined 



Same as CR0D 

Maximum Shear 
Maximum Shear 
Average Shear 
Average Shear 

Maximum 
Maximum 
Average 
Average 

Zl = Fibre Distance 1 
Normal-x at 1 



Normal .. 

Normal-x 

Normal -y 

Normal -y 

Shear-xy 

Shear-xy at i 

Z2 = Fibre Distance 2 

Normal-x at 2 

Normal-x at 2 

Normal -y at 2 

Normal -y at 2 

Shear-xy at 2 

Shear-xy at 2 



at 1 
at 1 
at 1 
at 1 
at 1 



R 
I 
R 
I 
R 
I 

R 
I 
R 
I 
R 
I 



2.3-185 



DATA BLOCK AND TABLE DESCRIPTIONS 



Element 
Tvoe Name 


Real 
Word or 
Component 


Element Stresses 
Item 


Compl 
Word or 
ComDonent 


ex Element Stresses 
Item 


Real 
Imaq. 


' jr^ 

7 


CTRBSC 




Note CTRIAl 




Note CTRIAl 




8 


CTRPLT 




Note CTRIAl 




Note CTRIAl 




9 


CTRMEM 


2 

3 
4 
5 
5 
7 
8 


Normal -X 
Norma 1-y 
Shear-xy 
0-Shear Angle 
Major-Principal 
Minor-Principal 
Maximum Shear 


2 
3 
4 

5 
6 
7 


Normal -X 
Normal -X 
Normal -y 
Normal -y 
Shear-xy 
Shear-xy 


R 

I 
R 

I 
R 

I 


10 


C0NR0D 




Note CR0D 




Note CR0D 




11 


CELASl 


2 


Stress 


2 
3 


Stress 
Stress 


R 

I 


12 


CELAS2 


2 


Stress 


2 
3 


Stress 
Stress 


R 

I 


13 


CELAS3 


2 


Stress 


2 
3 


Stress 
Stress 


R 
I 


14 


CELAS4 




Undefined 




Undefined 




15 


CQDPLT 




Note CTRIAl 




Note CTRIAl 




16 


CQDMEM 




Note CTRMEM 




Note CTRMEM 




17 


CTRIA2 




Note CTRIAl 




Note CTRIAl 




18 


CQUAD2 




Note CTRIAl 




Note CTRIAl 




19 


CQUADl 




Note CTRIAl 




Note CTRIAl 




20 


CDAMPl 




Undefined 




Undefined 




21 


CDAMP2 




Undefined 




Undefined 




22 


CDAMP3 




Undefined 




Undefined 




23 


CDAMP4 




Undefined 




Undefined 




24 


CVISC 




Undefined 




Undefined 




25 


CMASSl 




Undefined 




Undefined 




2G 


CMASS2 




Undefined 




Undefined 




27 


CMASS3 




Undefined 




Undefined 




28 


CMASS4 




Undefined 




Undefined 




29 


C51NM1 




Undefined 




Undefined 




30 


CeiNMZ 




Undefined 




Undefined 




31 


CPL0TEL 




Undefined 




Undefined 




32 


CREACT 




Undefined 




Undefined 





2,3-186 







DATA BLOCK DESCRIPTIONS 




Element 


Rea 


1 Element Stresses 




Complex Element 




Word or 






Word or 




Type Name 


Component 


Item 




Component 


Item 


33 CQUAD3 




Undefined 






Undefined 


34 CBAR 


2 


SAl 




2 


SAl 




3 


SA2 




3 


SA2 




4 


SA3 




4 


SA3 




5 


SA4 




5 


SA4 




6 


Axial 




5 


Axial 




7 


SA-maximum 




7 


SAl 




8 


SA-minimum 




8 


SA2 




9 


Safety Margin in 


Tension* 


9 


SA3 




10 


SBl 




10 


SA4 




n 


SB2 




11 


Axial 




12 


SB3 




12 


SBl 




13 


SB4 




13 


SB2 




14 


SB -maximum 




14 


SB3 




15 


SB-minimum 




15 


SB4 




16 


Safety Margin ir 


Comp* 


1G 

17 
18 
19 


SBl 
SB2 
SB3 
SB4 


35 CC0NEAX 


2 
3 


Harmonic or point angle 
Zl = Fibre Distance 1 




Undefined 




4 


Normal -u 


at 1 








5 


Normal -V 


at 1 








6 


Shear-uv 


at 1 








7 


0-Shear Angle 


at 1 








8 


Major-Principal 


at 1 








9 


Mi nor- Principal 


at 1 








10 


Maximum Shear 


at 1 








11 


Z2 = Fibre Dista 


nee 2 








12 


Normal -u 


at 2 








13 


Normal -V 


at 2 








14 


Shear-uv 


at 2 








15 


0-Shear Angle 


at 2 








16 


Major-Principal 


at 2 








17 


Minor-Principal 


at 2 








18 


Maximum-Shear 


at 2 






36 CTRIARG 


2 
3 
4 
5 


Radial (x) 
Circum (Theta) 
Axial (z) 
Shear (zx) 






Undefined 


37 CTRAPRG 


2 


Radial (x) 


at 1 




Undefined 




3 


Circum (Theta) 


at 1 








4 


Axial (z) 


at 1 








5 


Shear (zx) 


at 1 








6 


Radial (x) 


at 2 








7 


Circum (Theta) 


at 2 








8 


Axial (z) 


at 2 








9 


Shear (zx) 


at 2 








10 


Radial (x) 


at 3 








11 


Circum (Theta) 


at 3 








12 


Axial (z) 


at 3 








13 


Shear (zx) 


at 3 








14 


Radial (x) 


at 4 








15 


Circum (Theta) 


at 4 








16 


Axial (z) 


at 4 








17 


Shear (zx) 


at 4 








18 


Radial (x) 


at 5 







Real 
Imag. 



2.3-187 



DATA BLOCK AND TABLE DESCRIPTIONS 



Element 


Real 
Word or 


Element Stresses 






Complex Element Stresses 
Word or 


Real 


Type Name 


Component 


Item 






Comoonent Item 


Imaa. 


37 cont'd. 


19 


Circum(Theta) 


at 


5 








20 


Axial (z) 


at 


5 








21 


Shear (zx) 


at 


5 






38 CT(3RDRG 


2 


Mem.-Tagen. 


at 




Undefined 






3 


Mem. -C ire urn. 


at 










4 


Flex.-Tangen. 


at 










5 


Flex.-Circum. 


at 










G 


Shear-Force 


at 










7 


Mem.-Tangen. 


at 


2 








8 


Mem.-Circum. 


at 


2 








9 


Flex.-Tangen. 


at 


2 








10 


Flex.-Circum. 


at 


2 








11 


Shear-Force 


at 


2 








12 


Mem.-Tangen. 


at 


3 








13 


Mem.-Circum. 


at 


3 








14 


Flex.-Tangen. 


at 


3 








15 


Flex.-Circum. 


at 


3 








16 


Shear-Force 


at 


3 







* If not equal to integer 1. 

Note 

If output is magnitude/phase the magnitude replaces the real oart and the Phase renlaces 
the imaginary part. 



2.3-188 



DATA BLOCK DESCRIPTIONS 



2.3.52 Element Force Output Data Description . 



Note particular data block description (e.g., 0EF1 , I3EF61) for contents word 1 for each element. 



Element 
Type Name 



1 



CR0D 



CBEAM 



Real Element Forces 
Word or 
Component Item 



CTUBE 
CSHEAR 



5 CTIJIST 



6 CTRIAl 



Axial Force 
Torque 



Bend-Mom 

Bend-Mom 

Bend-Mom 

Bend-Mom 

Shear-1 

Shear-2 

Axial Force 

Torque 

Same as CR0D 

Force Pts 1 ,3 
Force Pts 2,4 



Moment Pts 1 ,3 
Moment Pts 2,4 



Bend-Mom-x 

Bend-Mom-y 

Twist-Moment 

Shear-x 

Shear-y 



7 


CTRBSC 




Same as CTRIAl 


8 


CTRPLT 




Same as CTRIAl 


9 


CTRMEM 




Undefined 


10 


C0NR(ilD 




Same as CR0D 


11 


CELASl 


2 


Force 


12 


CELAS2 


2 


Force 


13 


CELAS3 


2 


Force 



Al 
A2 
Bl 
B2 



Complex Element Forces 
Word or 
Component Item 



Axial Force 
Axial Force 
Torque 
Torque 

Undefined 



Real 
Imaq. 





Same as CR0D 




2 
3 
4 
5 


Force Pts 1,3 
Force Pts 1,3 
Force Pts 2,4 
Force Pts 2,4 


R 

I 
R 

I 


2 
3 
4 
5 


Moment Pts 1 ,3 
Moment Pts 1,3 
Moment Pts 2,4 
Moment Pts 2,4 


R 

I 
R 

I 


2 
3 
4 
5 
6 
7 
8 
9 
10 

n 


3end-Mom-x 

Bend-Mom-y 

Twist-Moment 

Shear-x 

Shear-y 

Bend-Mom-x 

Bend-Mom-y 

Twist-Moment 

Shear-x 

Shear-y 

Same as CTRIAl 

Same as CTRIAl 

Undefined 

Same as CR0D 


R 
R 

D 

R 
R 


2 
3 


Force 
Force 


R 
I 


2 

3 


Force 
Force 


R 

I 


2 
3 


Force 
Force 


R 

I 



2.3-189 



DATA BLOCK AND TABLE DESCRIPTIONS 



Element 


Real El 






Word or 


Type 


Name 


Component 


14 


CELAS4 


2 


15 


CQDPLT 




16 


CQDMEM 




17 


CTRIA2 





Item 



18 

19 

20 

21 

22 

23 

24 

25 

26 

27 

28 

29 

30 

31 

32 

33 

34 



CQUAD2 

CQUADl 

CD AMP 1 

CDAMP2 

CDAMP3 

CDAMP4 

CVISC 

CMASSl 

CMASS2 

CMASS3 

CMASS4 

C0NM1 

C0NM2 

CPL0TEL 

CREACT 

CQUAD3 

CBAR 



2 
3 
4 
5 
6 
7 
8 
9 



Force 

Note CTRIAl 

Undefined 

Note CTRIAl 

Note CTRIAl 

Note CTRIAl 

Undefined 

Undefined 

Undefined 

Undefined 

Undefined 

Undefined 

Undefined 

Undefined 

Undefined 

Undef i ned 

Undefined 

Undefined 

Undefined 

Undefined 

Bend-Mom Al 
Bend-Mom A2 
Bend-Mom Bl 
Bend-Mom B2 
Shear-1 
Shear-2 
Axial Force 
Torque 



Complex Element Forces 




Word or 
Component 


Item 




Real 
Imag. 


2 
3 


Force 
Force 

Note CTRIAl 

Undefined 

Note CTRIAl 

Note CTRIAl 

Note CTRIAl 

Undefined 

Undefined 

Undefined 

Undefined 

Undefined 

Undefined 

Undefined 

Undefined 

Undefined 

Undefined 

Undefined 

Undefined 

Undefined 

Undefined 




R 

I 


2 
3 

4 

5 

6 

7 

8 

9 

10 

11 

12 

13 

14 

15 

16 

17 


Bend-Mom 

Bend-Mom 

Bend-Mom 

Bend-Mom 

Shear-1 

Shear-2 

Axial Force 

Torque 

Bend-Mom 

Bend-Mom 

Bend-Mom 

Bend-Mom 

Shear-1 

Shear-2 

Axial Force 

Torque 


Al 
A2 
Bl 
B2 

Al 
A2 
Bl 
B2 


R 
R 
R 
R 
R 
R 
R 
R 



2.3-190 (12-1-69) 



DATA BLOCK DESCRIPTIONS 



Element 



Type 



Name 



35 



CC0NEAX 



36 



CTRIARG 



37 



CTRAPRG 



Word or 
Component 



Real Element Forces 



Item 



38 



CT0RDRG 



2 
3 
4 
5 
6 
7 

2 
3 
4 
5 
6 
7 
8 
9 
10 

2 
3 
4 
5 
6 
7 
8 
9 
10 

n 

12 
13 

2 

3 

4 

5 

6 

7 

8 

9 
10 
11 
12 
13 



Harmonic or point angle 

Bend-Mom u 

Bend-Mom v 

Twist-Moment 

Sheer u 

Shear v 



Radial (x) 


at 1 


Circum (Theta) 


at 1 


Axial (z) 


at 1 


Radial (x) 
Circum (Theta) 


at 2 


at 2 


Axial (z) 


at 2 


Radial (x) 


at 3 


Circum (Theta) 


at 3 


Axial (z) 


at 3 


Radial (x) 


at 1 


Circum (Theta) 


at 1 


Axial (z) 


at 1 


Radial (x) 


at 2 


Circum (Theta) 


at 2 


Axial (z) 


at 2 


Radial (x) 


at 3 


Circum (Theta) 


at 3 


Axial (z) 


at 3 


Radial (x) 


at 4 


Circum (Theta) 


at 4 


Axial (z) 


at 4 


Radial (x) 


at 1 


Circum (Theta) 


at 1 


Axial (z) 


at 1 


Moment (zx) 


at 1 


Direct Strain 


at 1 


Curvature 


at 1 


Radial (x) 
Circum (Theta) 


at 2 


at 2 


Axial (z) 


at 2 


Moment (zx) 


at 2 


Direct Strain 


at 2 


Curvature 


at 2 



Comp''ex Element Forces 

Word or 
Component Item 



Real 
Imag. 



Undefined 



Undefined 



Undefined 



Undefined 



2.3-191 (12-1-69) 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.3.53 Data Blocks Output From Module DDR2 

2.3,53.1 UEVF (MATRIX) 

Description 

[u^] - Displacements at the extra points for a frequency response problem. 

Matrix Trailer 

Number of columns = number of frequencies times number of loads 

Number of rows = e 

Form = rectangular 

Type = single precision 

2.3.53.2 PAF (MATRIX) 

Description 

[P ] - Equivalent load vector for mode acceleration computations in a frequency response 
* problem - a set. 

Matrix Trailer 

Number of columns = number of frequencies times number of loads 

Number of rows = d 

Form = rectangular 

Type = single precision 

2.3.53.3 UDV2F (MATRIX) 
Description 

[Uj^] - Mode accelerated displacement vectors for a frequency response problem. 

Ma trix Trailer 

Number of columns = number of frequencies times number of loads 

Number of rows = d 

Form = rectangular 

Type = complex single precision 

2.3.53.4 UEVT ( MATRIX) 

Description 

[u ] - Displacement at the extra points for a transient analysis problem. 



2.3-192 



DATA BLOCK DESCRIPTIONS 



Matrix Trailer 

Number of columns = number of output times multiplied by 3 

Number of rows = e 

Form = rectangular 

Type = real single precision 



2.3.53.5 PAT (MATRIX) 

Description 

[Pg] - Equivalent load vector for mode acceleration in a transient analysis probl 

Matrix Trailer 

Number of columns - number of output times multiplied by 3 

Number of rows - d 

Form - rectangular 

Type - real single precision 

2.3.53.6 UDV2T (MATRIX) 

Description 

[u^ ] - Mode accelerated displacement vectors for a transient analysis problem. 

Matrix Trailer 

Number of columns = number of output times multiplied by 3 

Number of rows = d 

Form = rectangular 

Type = real single precision 



em. 



2.3-193 



EXECUTIVE TABLE DESCRIPTIONS 

2.4 EXECUTIVE TABLE DESCRIPTIONS 

The following is an alphabetical index of Executive table descriptions. 



Section Number 


Executive Table Name 
CEITBL 


Where Stored 


Page Number 


2.4.1.5 


/XCEITB/ 


2.4-9 


2.4.1.4 


DPL 


/XDPL/ 


2.4-7 


2.4.1.2 


FIAT 


/XFIAT/ 


2.4-3 


2.4.1.3 


FIST 


/XFIST/ and /XPFIST/ 


2.4-5 


2.4.2.7 


LNKSPC 


/XLKSPC/ 


2.4-29 


2.4.2.2 


MPL 


/XGPI2/ 


2.4-21 


2.4.2.1 


0SCAR 


Data Pool File 


2.4-15 


2.4.2.4 


PVT 


/XPVT/ 


2.4-26 


2.4.1.8 


SYSTEM 


/SYSTEM/ 


2.4-13 


2.4.1.7 


TAP ID 


/STAPID/ 


2.4-12 


2.4.1.6 


VPS 


/XVPS/ 


2.4-10 


2.4.2.6 


XALTER 


Problem Tape 


2.4-28 


2.4.2.5 


XCSA 


Problem Tape 


2.4-27 


2.4.1.1 


XFIAT 


/XXFIAT/ 


2.4-2 


2.4.1.9 


XLINK 


/XLINK/ 


2.4-14 


2.4.2.3 


XPTDIC 


Problem Tape 


2.4-24 



2.4-1 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.4.1 Executive Tables Which are Permanently Core Resident 

2.4.1.1 XFIAT (Permanent File Allocation Table) 

Description 

A NASTRAN resident memory table containing the physical file identification for the 
permanent files (P00L, 0PTP, etc.). 

Created in Module 

The physical file identifications are output by GNFIAT (generate FIAT). 

Table Format 



Word 1 
2 

3 



s 


NOT 
USED 


1 7| 1 5 


FILE 

1 5 


s 


NOT 
USEJ 


1 7| 16 


FILE 

1 5 


s 


NjT 
USED 


If 

1 7| 16 


FILE 

1 5 


s 


riOT 
USED 


17| 16 


FILE 

15 


^ 


-^^ 


^ 





Word 
1-N 



Notes 



Item 
TP 

FILE 



Description 

Tape Flag (1 bit) - set if physical file (FILE) is a 
magnetic tape. 

File ID (15 bits) - unique integer identification for 
a physical file. 



1. The number of entries (N) is dictated by the integer value in PFIST (see FIST 
Executive Table Description - 2.4.1.3) 

2. The XFIAT table is located in the named common block /XXFIAT/. 



2.4-2 



EXECUTIVE TABLE DESCRIPTIONS 



2.4.1.2 FIAT (File Allocation Table). 

Description 

A NASTRAN resident memory table containing the data block name vs. physical file ID. for 
a segment of DMAP modules. 

Created in Module 

The physical files available for the system/computer confiquration are outnut by f^^lFIAT 
(generate FIAT). The data block names and other data block information are outnut by XSFA, 
Executive Segment File Allocator. 

Table Format 



Word 1 
2 
3 



6 
7 
8 
9 
10 



UFA 



MXE 



CAE 



A 
P 

3 1|3 



LTU 



|T I 
IP I 
I I 

1 7 16,1 5 



FILE 



DATA BLOCK 
NAME 



DATA BLOCK 
TRAILER 



I I 



FIAT Header 



Entry #1 (sample) 



Entry #2 through CAE 



2.4-3 



DATA BLOCK AND TABLE DESCRIPTIONS 



Word Item Description 

1 UFA Unique files available - this integer indicates the number of 

unique file entries in the FIAT. 

2 MXE Maximum entries - this integer shows the total entry size of 

the dimensioned FIAT table; the amount of memory reserved 
(N) = 6 X MXE + 3. 

3 CAE Current active entries - this integer designates the portion of 

FIAT currently containing valid data; UFA^^ CAE« ItXE. 

Words 4 through 9 describe a sample 6-word entry: 

Equivalence flag (1 bit) - bit, file not equivalence^. 

1 bit, file equivalenced. 

Append flag (1 bit) - set if aopend is soecified for data 
block in DMAP sequence by a FILE DMAP instruction. 

Last time used (14 bit integer) - record number of 0SCAR 
entry for last use of data block. 

Tape flag (1 bit) - set if physical file (FILE) is a magnetic 
tape. 

File ID (15 bits) - unique identification for a physical file. 

Data block name - 8 characters (4 characters/word). 

Data block trailer - storage for 6-16 bit data block trailer 
words. 

Words 10 through N contain repeated 6-word entries. 

Trailer Information 

Trailer information for each data block is stored in and received from the FIAT by WRTTRL 
(write trailer) and RDTRL (read trailer). 

Note 

The FIAT table is located in the named common block /XFIAT/. 



4 


EQ 




AP 




LTU 




TP 




FILE 


5.5 


NAME 


7,8,9 


TRAILER 



2.4-4 



EXECUTIVE TABLE DESCRIPTIONS 



2.4.1.3 FIST (File Status Table) 

Description 

A NASTRAN resident memory table containing the internal data block reference (IDBR) 
numbers vs. FIAT table pointers for a particular module; also, the permanent file reference 
names vs. XFIAT table pointers. 

Created in Module 

The module entries are generated prior to each module execution by subroutines GNFIST 
(Generate FIST). The permanent entries are initialized at system assembly. 

Table Format 



PFIST 



Word 1 



21+2+1 



+2 



+3 

+4 

N 



MXE 



CAE 



Perm Name 



XF Point 



Perm Name^ 



XF Point 



IDSR, 



F Point 



IDBR. 



F Point 



FIST Header 



Sample Permanent Entry 



Sample Module Entry 



2.4-5 



DATA BLOCK AND TABLE DESCRIPTIONS 

Word Item Description 

PFIST I Integer number of permanent FIST entries. 

1 MXE Maximum entries - this integer shows the total entry size of the 

dimensioned FIST table; the amount of memory reserved 
(N) = 2 * MXE + 2. 

2 CAE Current active entries - this integer designates the portion of 

FIST currently containing valid data; I ^ CAE s MXE. 

Words 3 and 4 describe a sample 2-word permanent entry: 

3 Perm Name A permanent file reference name - 4 characters BCD (e.g., P00L, 

0PTP, PLTl, etc.). 

4 XF Point Points to the XFIAT position containing the file ID for this 

permanent file. 

Words 21+2+1 and +2 describe a sample 2-word module entry. 

+1 IDBR An internal data block reference number (GIN0 file number) - 

integer (e.g., 104, 206, 301, etc.). 

+2 F Point Points to the FIAT position containing the file ID for this 

module entry. 



Notes 



1. XFIAT pointer values contain an S bit equal to 1, while FIAT pointer values contain an 
S bit equal to 0. 

2. Permanent entries remain static throughout a run, while module entries are changed by 
GNFIST prior to each module call. 

3. FIAT and XFIAT position pointers are indexes into the respective tables considering 
the first word of the table as position 0. 

4. The FIST table is located in the named common block /XFIST/. 
The PFIST entry is located in the named common block /XPFIST/. 



2.4-6 



EXECUTIVE TABLE DESCRIPTIONS 

2.4.1.4 DPL (Data Pool Dictionary) 

Description 

A NASTRAN resident memory table describing the current contents and status of the Data Pool. 

Created in Module 

Data Pool, and therefore Dictionary entries, are created by pooling from SFA (Segment File 
Allocator), housekeeping operations by DPH (Data Pool Housekeeper) and restart initialization bv 
GPI (General Problem Initialization), and IFP (Input File Processor) when writing DMI and DTI 
information (see section 2.3.2). 



Table Format 



Word 1 



"eT 



Slai 



NFA 



MXE 



CAE 



DATA BLOCK 
NAME 



DPL Header 



SIZE 



I FILE # 



1 7|1 6 



Entry #1 (sample) 



Entry #2 



2.4-7 



DATA BLOCK AND TABLE DESCRIPTIONS 



Word Item Description 

1 NFA Next file available - the next Data Pool File number (inteqer) 

available for output. 

2 MXE Maximum entries - this integer shows the total entry size o^' 

the dimensioned DPL table; the amount of memory reserved 
(N) = 3 * MXE + 3. 

3 CAE Current active entries - this integer designates the portion of 

the DPL currently containing valid data; 0^ CAE s MXE. 

Words 4 through 5 describe a sample 3-word entry. 

4,5 NAME Data block name - 8 characters (4 characters/word). 

6 EQ Equivalence flag (1 bit) - bit, file not equivalenced. 

1 bit, file equivalenced. 

SIZE Size of the pooled data block - number of words/10. 

FILE# The file number (integer) showing the relative position of the 
data block file of the pool. 

Note 

The DPL table is located in the labeled common block /XDPL/. 



2.4-8 



EXECUTIVE TABLE DESCRIPTIONS 

2.4.1.5 CEITBL (Control Entry Information Table) 
Description 

CEITBL controls the REPT and EXIT DMAP module execution. 
Created In Module 

XGPI. 
Table Format 



Word 1 

2 

3 

4 

5 
6 
7 

8 

9 

10 



--\ 



m 


QH 


31 


BL 

1 7 


1 6 


EL 


1 


.3i . 


ML 

1 7 


16 


CL 


.i 




LN 






Not 


used ^, 


1 6 


ERN 


1 


31 


MC ., 


16 


CC 


1 


Not used 


Not used 








■ 



Sample entry for REPT control 
(4 words) 



Sample entry for EXIT control 
(4 words) 



Word 



Item 



1 


MN 


2 


CN 


3 


BL 
EL 


4 


ML 
CL 


5,6 


LN 


7 


ERN 


8 


MC 
CC 



9.10 



Description 

Maximum number of words in table (integer). 

Current number of words being used (integer). 

0SCAR record number where loop begins (integer). 
0SCAR record number where loop ends (integer). 

Maximum loop count as specified in REPT instruction (integer). 
Current loop count, that is, the number of times loop has been 
repeated (integer). 

Location name specified in REPT instruction (BCD). 

EXIT 0SCAR record number (integer). 

Maximum count specified in EXIT instruction. 

Current count of number of times EXIT instruction not executed. 

These two words are zeroed. 



Notes 



CEITBL is located in named common block /XCEITB/. 



2.4-9 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.4.1.6 VPS (Variable Parameter Set Table) 

Description 

The VPS table contains the values of all variable parameters referenced by DMAP modules in a 
DMAP program. It is the means for transferring variable parameter values from one module to 
another. 

Created in Module 

XGPI. 

Table Format 



Word 1 
2 
3 
4 



6 
5+L 



Word 



30 



m 



Item 



1 


MN 


2 


CN 


3.4 


Name 


5 


A 



6 thru 5+L 



T 
L 
V 



CN 



Parameter 
Name 



I Sample entry 
{variable length) 



Description 

Maximum number of words in VPS (integer). 

Current number of words being used (integer). 

BCD name of variable parameter. 

Assigned flag. A = 1 indicates value from DMAP instruction 
has been entered in VPS. 

Modified flag. M = 1 indicates parameter was modified by bulk 
data PARAM card on restart. 

Type code for parameter (integer). 

Length in words of item V (integer). 

Value of parameter. 



2.4-10 



EXECUTIVE TABLE DESCRIPTIONS 



Notes 



1. Items A, M and T (word 5 of sample entry) are used only by the XGPI module and are 
cleared prior to exiting XGPI. 

2. Type code and corresponding word length. 



1 = integer 


1 


2 = real, S.P. 


1 


3 = BCD 


2 


4 = real , D.P. 


2 


5 = complex, S.P. 


2 


6 = complex, D.P. 


4 



3. The VPS table is located in the named common block /XVPS/. 



2.4-11 



DATA BLOCK AND TABLE CESCF'.IPTIONS 

2.4.1.7 TAPID (Problem Tape Identification Table) 
Description 

TAPID contains Problem Tape identification information. 
Created in Module 

XCSA. 

Table Format 

Word 1 

2 

3 

4 

5 
5 



— 


ID^ 










ID2 







M 




D 






Y 


3 1 


1 5 


1 ■) 


9 


8 


1 


R 



Word 



Item 



Description 
First BCD field on ID Executive Control card. 
Second BCD field on ID Executive Control card. 
The date - integers - month, day, year. 
Reel number of Problem Tape (integer). 



1. TAPID is written on Problem Tape as single record field. It is always the first file 
on the Problem Tape. 

2. 0TAPID has same format as TAPID. (ilTAPID is the ID information from an Old Problem Tape 
being used for restarting problem. 

3. TAPID and pTAPID are located in named common block /STAPID/. 



1.2 


ID, 


3.4 


ID2 


5 


M.D.Y 


6 


R 


Notes 





2.4-12 



EXECUTIVE TABLE DESCRIPTIONS 



2.4.1.8 SYSTEM (NASTRAN System Parameters). 



Description 



A NASTRAN resident memory table containing various machine dependent, operating system and 
NASTRAN parameters. The length of the table is defined by one of the table items. 

Created in Module 



Most items are initialized by the NASTRAN block data program, SEMDBD. 
dependent items are set by subroutine BTSTRP, 



Several machine 



Table Format 



The sequential teble description follows: 

Word Symbol Description 



1 


SYSBUF 


2 


0UTTAP 


3 


N0G(9 


4 


INTP 


5 


MPC 


6 


SPC 


7 


METH0D 


8 


L0AD 


9 


NLPP 


10 


MTEMP 


11 


NPAGES 


12 


NLINES 


13 


TLINES 


14 


MXLINS 


15 


DATE(l) 


16 


DATE (2 


17 


DATE (3) 


18 


TIMEZ 


19 


ECH0F 


20 


PL0TF 


2"! 


APPRCH 


22 


MACH 


23 


LSYSTM 


24 


EDTUMF 


25 


SWITCH 


26 


CPPGCT 


27 


MN 



28 



IC0NFG 



29 


MAXFIL 


30 


MAX0PN 


31 


K0N36O 



32 



TIMEW 



Number of words in a GIN0 buffer 

F0RTRAN logical unit for output 

Flag defining status during Preface 

F0RTRAN logical unit for input 

Multipoint constraint set ID 

Single-point constraint set ID 

Eigenvalue extraction method 

First record pointer in Case Control data block 

Number of lines per page of printed output 

Material temperature set ID 

Current page count 

Number of lines on current page 

Total number of lines printed for problem 

Maximum number of printed lines permitted 

Today's date - integer month 1-12 

Today's date - integer day 1-31 

Today's date - integer year (XX) 

Time of problem start - seconds after midnite 

Bulk data output request type 

Structural plot request flag 

Approach type flag (1 = F0RCE, 2 = DISPL, 

3 = DMAP) 
Computing machine code number (1 = 7094, 

2 = 360, 3 = 1108, 4 = 6600) 
Length of this table 
User master file edit flag 
Logical sense switch bits set by a DIAG 

Executive Control Deck card 
XCHK module page count 
Used only in a conical shell problem. The lower 

order 16 bits contain N, the number of 

harmonics; the next higher order 16 bits 

contain M, the number of rings. 
Machine configuration - subset of MACH code 

number 
Maximum number of files to be added to FIAT 
Maximum number of files to be opened simultaneously 
Number of memory words to be released for OS 

(360 only) 
Initial problem start time (integer seconds after 

midnite) 



Initially 
Set by 

BTSTRP 
BTSTRP 
SEMDBD 
BTSTRP 
SEMDBD 
SEMDBD 
SEMDBD 
SEMDBD 
BTSTRP 
SEMDBD 
SEMDBD 
SEMDBD 
SEMDBD 
SEMDBD 
SEMDBD 
SEMDBD 
SEMDBD 
SEMDBD 
SEMDBD 
SEMDBD 

SEMDBD 

BTSTRP 
SEMDBD 
SEMDBD 

SEMDBD 
SEMDBD 



SEMDBD 

SEMDBD 
SEMDBD 
SEMDBD 

SEMDBD 

SEMDBD 



2.4-13 (12-1-69) 



EXECUTIVE TABLE DESCRIPTIONS 



Word Symbol Description Initially 
Set by 

0FP operate flag - set nonzero when 0FP operates SEMDBD 

Length of FET + circular buffer (CDC 6600 only) SEMDBD 

Length of master index (CDC 6600 only) SEMDBD 

Length of subindex (CDC 6600 only) SEMDBD 
Not used 

Number of bits per character BTSTRP 

Number of bits per word BTSTRP 

Number of characters per word BTSTRP 



33 


0FPFLG 


34 


NBRCBU 


35 


NBRMST 


36 


NBRSUB 


37-38 




39 


NBPC 


40 


NBPW 


41 


NCPW 



2.4-13a (12-1-69) 



DATA BLOCK AhD TABLE DESCRIPTIONS 



2.4.1.9 XLINK (Link Specification Table - Non-resident Edit) 
Description 

This Link Specification Table (see also 2.4.2.7) contains an entry corresponding to each 
DMAP module within the MPL (2.4.2.2) table. These entries are indexed by MPL position and 
are thus ordered the same as the MPL entries. Each entry contains a key indicating the 
links in which the module resides. 

Created in Module 

XLINK data is created from the LNKSPC (2.4.2.7) and MPL (2.4.2.2) tables by the XGPIBS 
subroutine within the XGPI (4.7) module. 

Table Format 



Word 1 

2 
3 



LXLINK 



MAXLNK 



Key 



Key 



Key 



Entry #1 (sample) 
Entry #2 
Entry #3 



Word 

1 
2 

3,N 



Item 

LXLINK 
MAXLNK 
Key 



Description 

Length of table (number of entries) 

Maximum permissable link number 

Link residence key for the corresponding MPL entry 



The content of this Key word is identical to the Key word within LNKSPC (2.4.2.7) for the 
machine type currently operating. See section 2.4.2.7 for an explanation of the content. 



Notes 



1. The XLINK table must contain an entry in the same order for each module that is 
in the MPL (2.4.2.2) table. 

2. XLINK table is located in /XLINK/. 



2.4-14 



EXECUTIVE TABLE DESCRIPTIONS 

2A.2 Executive Tables Not Permanently Core Resident 
2.4.2.1 0SCAR (Operation Sequence Control Array) 
Description 

The Operation Sequence Control Array (0SCAR) controls the sequence of modules executed and 
aids in communicating data between modules. 

The (3SCAR is generated from a DMAP instruction sequence supplied by the user or selected 
from the Rigid Format library. In general, an 0SCAR entry is a DMAP statement which has been 
translated to a more readily usable form for internal use. 

The four 0SCAR entry format types are: 

1. Type 1 or F (functional) format is used for all functional modules exceot outnut 
processors. 

2. Type 2 or (output) format is used for output processors. 

3. Type 3 or C (control) format is used for REPT, JUMP, C0ND and END DMAP instructions. 

4. Type 4 or E (executive) format is used for SAVE, CHKPNT, PURGE and EQUIV DMAP 
instructions. 

Created in Module 

XGPI. 

Table Format 



Word 1 


N 


2 




RU 




3 






MI 


T 




s 


3 1 


17 16 


1 


4 




Module 






— — 







5 




Name 




6 


EX 
s 


3 1 


DIN 


1 


7 


Format of this 


< 


• i 


section is dependent i 


N 


on 


value of T 





Entry Header Section 



Entry Data Section 



2.4-15 



DATA BLOCK AND TABLE DESCRIPTIONS 



Word 



Item 



1 


N 


2 


RN 


3 


MI 



4,5 
6 



Name 



EX 
DIN 



Description 

Integer - number of words in entry. 

Integer - record number of entry in laSCAR table. 

Integer - module index number assigned according to module's 
position in MPL and used to access the module's link specifica- 
tions in /XLINK/. 

Integer - format type code (1, 2, 3, or 4) for data section 
of entry. 

BCD - module name is same as DMAP instruction name except when 
T = 4. 

Execute flag. EX = 1 indicates module is to be executed. 
Integer - DMAP instruction number which generated this entry. 



Data Section Format for Type 1 or F Format: 



Word 7 
8 
9 

10 



8+NIP*3 

9+NIP*3 

10+NIP*3 

11+NIP*3 



NIP 



AP 



DATA BLOCK 
NAME 

TP 

LTU 

30 17 



NTU 

15 1 



NpP 



DATA BLOCK 
NAME 



AP 



LTU 

30 17 



TP 



NTU 



9+NIP*3+N0P*3 
10+NIP*3+N0P*3 
11+NIP*3+N0P*3 



NS 



NP 



CV 

S|3 1 



IL 



•Sample entry 



■Sample entry 



Input 

Data Block 
Subsection 



Output 
Data Block 
Subsection 



Sample entry I Parameter 

j (variable length)/ Subsection 



(Not used) 



2.4-16 



Uord Item 



7 


NIP 


8.9 


NAME 


10 


AP 




LTU 




TP 




NTU 


8 + NIP*3 


N0P 


9 + NIP*3, 
10 + NIP*3 


NAf4E 


11 + NIP*3 


AP.LTU, 
TP.NTU 


9 + NIP*3 + 
NCfP*3 


NS 


10 + NIP*3 + 

mp*3 


NP 


11 + NIP*3 + 
N0P*3 


CV 

IL 



EXECUTIVE TABLE DESCRIPTIONS 



Description 

Integer - number of data blocks input to module as specified 
in MPL. 

BCD - name of first input data block specified in DMAP instruc- 
tion or zero if none specified. 

Append flag used by subroutine XSFA and set by X0SGEN if APPEND 

is specified for data block in a FILE OMAP instruction. 

Integer - last time used. (?SCAR record number of entry a^ter 

which data block will no longer be saved. 

Tape flag used by subroutine XSFA and set by X'3SREM if tane is 

specified for data block in a FILE DMAP instruction. 

Integer - next time used. !3SCAR record number o^ entry where 

data block is next referenced. 

Integer - number of data blocks outout from module as sneci^ied 
in MPL. 

BCD - name of first output data block specified in DMAP instruc- 
tion or zero if none specified. 

Same descriptions as word 10. 



Integer - number of scratch data blocks used by module as 
specified in MPL. 

Integer - number of parameters used by module as specified in 
MPL. 

Constant/variable flag. Flag indicates meaning of IL. 

Integer - VPS index/length of constant. If CV = the parameter 
is a constant whose value is stored in the next IL words (i.e 
words 12 + MIP*3 + N0P*3 through 11 + NIP*3 + N0P*3 + IL). 
If CV = 1 the parameter is a variable whose value is stored in 
the VPS table. IL points to the value in VPS. 



2.4-17 



DATA BLOCK AND TABLE DESCRIPTIONS 



Data Section Format for Type 2 or Format: 



Word 7 
8 
9 

10 



8+NIP*3 
9+NIP*3 

10+NIP*3 



AP 



C\ 



NIP 



DATA BLOCK 
NAME 



LTU 

30 17 



TP 



NTU 

IS 1 



NS 



NP 



IL 



> Sample entry 



^ Input Data Block 
Subsection 



►Sample entry 

I (variable length) 



■Parameter 
'Subsection 



Type 1 format description is applicable to type 2 format above. 
Data Section Format for Type 3 or C Format: 



Word 7 = N 





RRN ,, 

31 17 


le I 1 



Word 

N 



Item 
RRN 



Description 

Integer - re-entry record number. Indicates (JSCAR record to 
jump to for JUMP, REPT and C0ND DMAP instructions. Not 
applicable for EXIT so RRN = 0. 

Integer - index into XCEITBL for REPT or EXIT DMAP instruction, 
Pointer to oarameter value in XVPS table if C0ND DMAP 
instruction. Not applicable for JUMP so I =0. 



2,4-18 



EXECUTIVE TABLE DESCRIPTIONS 



Data Section Formats for Type 4 or E Forma ts : 



Word 7 



NP 



IV 
IB 



> Sample entry 



Format for 
SAVE DMAP 
instruction 



iJord 



Item 
NP 

IV 
IB 



Description 

Integer - number of parameter values to be saved (i.e. number 
of entries). 

Integer - pointer to parameter value in VPS. 

Integer - pointer to parameter value in blank common. 



Word 7 



N-1 



NDB 



FIRST DATA 
BLOCK NAME 



LAST DATA 
BLOCK NAME 



Format for CHKPr!T 
DMAP instruction 



Word 



S thru N 



Item 

NDB 

NAMES 



Description 
Integer - number of data blocks names in list. 
BCD - list of data blocks to be checkpointed. 



2.4-19 



DATA BLOCK AND TABLE DESCRIPTIONS 



Word 7 
8 
9 





NDB 




-- 


DATA BLOCK 
NAME 


V- 


f 


\ 


IV 



, Format for PURGE or EQUIV 
DMAP instruction 



Description 

Integer - number of data block names in first qroun. There 
may be one or more grouos . 

BCD - name of first data block in first group. 

Integer - pointer to parameter value in VPS table. 



1. (3SCAR is located in named common block /XGPIl/ while module XGPI is generating it. 

2 After generating 0SCAR and prior to exiting XGPI the 0SCAR is written on the Data Pool 
File. The OSCAR file header ID is XjJSCAR. 



Word 


Item 


7 


NDB 


8,9 


NAi^E 


N 


IV 


Notes 





2.4-20 



EXECUTIVE TABLE DESCRIPTIONS 



2.4.2.2 MPL (Module Property List) 
Description 

The Module Properties List contains information needed by the module XGPI to correctly 
generate (JSCAR table entries for executable DMAP instructions and/or to determine whether or 
not the DMAP instructions adhere to the calling sequence described in section 4. Module 
Functional Descriptions. 

Created in Module 

XGPI (Block Data Program XMPLBD). 

Table Format 

There are two formats used in the MPL, one for Declarative (FILE, BEGIN, LABEL) Executive 

(CHKPNT, EQUiy, PURGE, SAVE) and Control (REPT, JUMP, CQW, EXU. END) DMAP ^dules and Se o?her 

for functional modules. All entries in the MPL are integer except for module names which are 
BCD and BCD parameter values. 

Format for Declarative, Executive and Control Modules: 



Word 1 
2 
3 

4 




Word 



Item 



1 


N 


2.3 


Name 


4 


F 



Description 
Number of words in entry. 
Name of DMAP module. 

0SCAR format type code 

3 = Control module (C format) 

4 = Executive module (E format) 

5 = Declarative module (D format) 



2,4-21 



Format for Functional Modules: 



DATA uLOCK AND TABLE DESCRIPTIONS 



Word 1 
2 
3 
4 
5 
6 
7 



t 



N 



Module 

Name 



IP 



0P 



Parameter List 



Variable Lenqth 



Word 
1-3 

4 



Item 



7 

8-N 



IP 
!3P 
S 



Description 

Same as format for Declarative, Executive and Control modules. 

F = 1 implies module has input and output data blocks 

F = 2 implies module has no output data blocks, e.g., 
0FP, SETVAL etc. 

Number of input data blocks. 
Number of output data blocks. 
Number of scratch data blocks. 
Parameter List (omit if no parameters). 



ThP narameter list for a module contains the types of all parameters residing in blank 

an index into another table which contains the default value. 
Type Code 

1 = integer 

2 = real, single precision 

3 = BCD 

4 = real , double precision 

5 = complex, single precision 

6 = complex, double precision 



llj.:: — ^ ^ 

1 word 


1 word 


2 words 


2 words 


2 words 


4 words 



2.4-22 (12-1-69) 



EXECUTIVE TABLE DESCRIPTIONS 

An example of all possible entries in a parameter list follows. Note that for each parameter 
only the first index word will appear in the XMPLBD Block Data subprogram. 



Word 





1 


8 




-3 


q 




-1 


10 




2 


11 




1 


12 




-2 


13 




3 


14 




A6CD 


15 




EFGH 


16 




-3 


17 




4 


18 




1 


19 




1 


20 




-4 


21 




5 


22 




2 


23 




2 


24 




-5 


25 




6 


25 




3 


27 




3 


28 




4 


29 




4 


30 




-5 


31 


Notes 







={ 



Integer type code. 

Integer default value. 

Integer type code (no default value). 

Real , S.P. type code. 

Index into table containing a real S.P. default value. 

Real, S.P. type code (no default value). 

BCD type code. 

BCD default value (2 words). 

BCD type code (no default value). 
Real , D.P. type code. 
|Index into table containing a real D.P. default value. 
(Note index is in both words. 
Real, D.P. type code (no default value). 
Complex, S.P. type code. 

jlndex into table containing a complex S.P. default value. 

Complex, S.P. type code (no default value). 
Complex, D.P. type code. 

jlndex into table containing the real part of the complex D.P. default value. 

(Index into table containing the imaginary part of the complex D.P. 
Idefault value. 
Complex, D.P. type code (no default value). 



1. MPL table is located in named common block /XGPI2/. 

2. The default value table is located in named common block /XGPI2X/. 



2.4-23 (12-1-69; 



DATA BLOCK AMD TABLE DESCRIPTIONS 

2.4.2.3 XPTDIC (Problem Tape Dictionary) 
Description 

XPTDIC is the Problem Tape Dictionary of data blocks checkpointed plus other information 
needed to restart a problem. 

Created in Modules 

XGPI, CHKPNT and XCEI. 

Table Format 



Record 



Word 
1 
2 
1 

2 
1 
2 
3 

4 
5 
6 



K 
K+1 

K+2 



EQ 



ET 



ID 





3 1 


PR 




17 


1 6 


NAF 


1 


s 



XVPS 



BCD BLANKS 



BCD BLANKS 



DIN 

31 17 



0RN 

16 1 



DBN 



ER 



3ll 30 




First entry in a 
grouo is a special 
entry 



Reoeat this entry 
for all data blocks 
referenced explicitly I This 
or implicitly in \ groun 
CHKPNT instruction ) of 

entries 

is 

repeated 

for each 

CHKPNT 

module 

executed 



2,4-24 






1,2 


ID 


1 


1 


PR 

NAF 



EXECUTIVE TABLE DESCRIPTIOHS 

Record Word Item Description 

Header record containing name XPTDIC (BCD). 

Present reel number of Problem Tape. Reels are 
numbered sequentially beginning with Reel 1. 
Next available file number on present reel. 
Files are numbered sequentially beginning with 
file 1. 

2 S Sequence number of last restart dictionary card 

punched out. 

1,2 XVPS BCD name XVPS. The file correspondina to this 

entry contains named comnon blocks /XVPS/ and 
/XCEITB/. 

3 R,F Reel number and file number where the file 

correspondinq to this entry is located. For this 
entry the reel number must be one. 

BCD blanks indicate snecial entry. 

DMAP instruction number of DMAP instruction 
following CHKPNT module (i.e., re-entry Doint). 
0SCAR record number of CHKPNT module being 
executed. 

Data block name (BCD) of data block being 
checkpointed. 

Equivalence flag. EQ = 1 indicates data block is 
equivalenced to another data block. 
End of tape flag. ET = 1 indicates that data 
block is split across two reels of problem tape. 
End of logical record flag. ER = 1 indicates 
that the comDlete logical record was written out 
prior to changing reels when ET = 1 . 

R,F Reel number and file number where the file 
corresponding to this entry is located. For 
purged or not-generated data blocks, R = and 
F = 0. 

K, K+1 XVPS BCD name XVPS. The file corresoondinn to this 

entry contains named common blocks /XVPS/, 
/XCEITB/ and /SYSTEM/. 

K+2 EQ.ET, See word 9 for descriotions . 
ER,R,F 



Notes 



4,5 


(blanks) 


6 


DIN 




0RN 


7,8 


DBN 


9 


EQ 




ET 




ER 



1. All entries are integer unless otherwise noted. 

2. The XPTDIC table is always the last file on the Problem Tape. 

3. XGPI generates records 0, 1 and the first entry of record 2. CHKPNT modules add 
entries to record 3. XCEI drops entries from record 2 when a REPT DMAP instruction 
transfers control to the top of a DMAP loon. 

4. XCS/\ also creates a XPTDIC table when problem is being restarted. This soecial XPTDIC 
table is created from the restart dictionary and its format is essentially the same as 
described above except that there are no special entries. 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.4.2.4 PVT (Parameter Value Table) 
Description 

The Parameter Value Table contains the parameter names and values of all parameters input 
by means of the PARAM bulk data card. 



Created in Module 




IFP. 




Table Format 




Record 


Word 





1.2 


1 


1.2 
3 

4 



3+L 



Item 

Header record contains name PVT (BCD). 

Name of parameter (BCD) ] repeat 
Type code for parameter value f for all 
Value of parameter. Type codes > parameters 
and corresponding lengths, L, of V on PARAM 
values are given in table below. ) cards. 



Notes 



Type Code 

1 
2 
3 

4 
5 
6 


Meaning of Code 

Integer 

Real, single precision 

BCD 

Real, double precision 

Complex, single precision 

Complex, double precision 


Corresponding 
Lenath in Words 

1 
1 
2 
2 
2 
4 



1. IFP does not create PVT if no PARAM cards exist in the Bulk Data Deck. 

2. PVT is written on the Problem Tape as 2 or more records (a header record and 1 record for 
each PARAM card). 

3. The PVT table is located in named common block /XPVT/. 



2.4-26 



EXECUTIVE TABLE DESCRIPTIOMS 



2.4.2.5 XCSA (Executive Control Table) 
Description 

Executive control table derived from the Executive Control Deck. 
Created in Module 



XCSA. 




Table Format 




Record 


Word 





1 
2,3 
4.5 
6.7 


1 


1 
2 
3,4 
5 
6 



L 
L+1 



M 
M+1 



Item 

BCD word XCSA - header ID. 

BCD word Sl3L ) Dictionary of contents of records 
BCD word Dh'lAP /■to follow. Does not need to be in 
BCD word MED 'this order, nor is MED always present. 

Approach code ^ 

Start code / 

Alter parameters ^ Spi record 

Solution number \ 

Subset number ) 



RD table (packed DMAP program) 
or user generated DMAP 
program (18 words per card 
image) . 



DMAP record 

(BCD information) 



Number of DMAP instructions 

Number of words per ISl table entry. 

ISl table (Module Extcution Decision Table), 



Number of entries in JNM table. 

JNM table (File Name Table) 

Number of entries in INM table 

INM table (Card Name Table) 

End-of-file 



MED record 
included 
only i^ 
i anoroach 
calls for 
a Riqid 
Format 



Notes 



1. Data block XCSA is written on the Problem Tape. 

2. A more detailed description of tables ISl, JNM and INM is given in the Module 
Functional Description for module XCSA, section 4.2. 



2.4-27 



DAIA BLOCK AND TABLE DESCRIPTIONS 

2.4.2.5 XALTER (Executive Alter Table) 
Description 

XALTER is generated from the ALTER data in the Executive Control Deck. 
Created in Module 

XCSA. 



Table Format 



Record 



Word 

1.2 

1.2 

1 



Item 

BCD word XALTER - header record 

Numbers of DMAP instructions 
to be altered. (Integers). 

I Zero or more of these [ Repeat 1 or 

,- J • /nrr,\ v records. Reneat until ) more times 

Card image (BCD) }^^^^ ^ word record ( until E0F 

I encountered . i encountered. 



Notes 



End-of-file 



XALTER data block is written on the Problem Tape. 



2.4-28 



EXECUTIVE TABLE DESCRIPTIONS 

2.4.2.7 LNKSPC (Link Specification Table - Resident Base) 

Description 

This Link Specification Table (see also 2.4.1.9) contains an entry for each executable 
DMAP module available within the MASTRAH system. Each entry contains: a) the DIW module 
name, b) the module's subroutine entry point name and c) a key indicating the links in which 
the module resides for each of four machine types. 

Created in Module 

LNKSPC data is stored by the XBSBD Block Data subprogram in module XGPI (4.7). 

Table Format 



Word 


1 
2 


LLINK 




DMAP Module 






3 


Name 






4 


Entry Point 






5 


ilame 






6 


Key #1 






7 


Key #2 






8 


Key #3 






9 


Key #4 





Entry #1 (Sample) 



Word 

1 

2.3 

4,5 

6 

7 

8 

9 



Item 

LLINK 

DMAP Module Name 

Entry Point Name 

Key #1 

Key #2 

Key #3 

Key #4 



Description 

Length of table in words (excluding word 1) 
DMAP name-8 characters (4 characters/word) 
Entry name-8 characters (4 characters/word) 
L-'nk residence key for machine type #1 
Link residence key for machine type #2 
Link residence key for machine type #3 
Link residence key for machine type #4 



2.4-29 



DATA BLOCK AMD TABLE DESCRIPTIONS 



The machine type code number is the same as that defined in the MACH word of the SYSTEM 
(2.4.1.8) table. Each bit within the Key word specifies a link number that is to contain that 
module. Bits are numbered from right to left; the right most (least significant) bit 
specifies that the module is to reside in link 1, etc. For example, if a particular Key 
contained 26 (binary 011010), only links 2, 4 and 5 would contain the specified module. 



fvotes 



The LilKSPC table must contain an entry for each executable module that is in the 
MPL (2,4.2.2) table. 

The LMKSPC table is located in /XLKSPC/. 



2.4-30 



MISCELLANEOUS TABLE DESCRIPTIONS 

2.5 MISCELLANEOUS TABLE DESCRIPTIONS. 

The following 1s an alphabetical index of miscellaneous table descriptions. 



Section Number 


Table Name 


Where Stored 


Page Number 


2.5.2.2 


BITP0S 


/BITP0S/ 


2.5-7 


2.5.2.4 


CHAR94 


/CHAR94/ 


2.5-10 


2.5.2.7 


CHRDRW 


/CHRDRW/ 


2.5-13 


2.5.1.6 


DESCRP 


/DESCRP/ 


2.5-3 


2.5.2.1 


GPTAl 


/GPTAl/ 


2.5-6 


2.5.1.5 


MSGX 


/MSGX/ 


2.5-3 


2.5.1.8 


NAMES 


/NAMES/ 


2.5-4 


2.5.1.1 


0SCENT 


/0SCENT/ 


2.5-2 


2.5.1.2 


I3UTPUT 


/OUTPUT/ 


2.5-2 


2.5.2.3 


PLTDAT 


/PLTDAT/ 


2.5-8 


2.5.1.3 


ST I HE 


/STIHE/ 


2.5-2 


2.5.2.6 


SYMBLS 


/SYMBLS/ 


2.5-12 


2.5.1.7 


TW0 


/TW0/ 


2.5-4 


2.5.1.9 


TYPE 


/TYPE/ 


2.5-4 


2.5.1.4 


XMDMSK 


/XMDMSK/ 


2.5-3 


2.5.2.5 


XXPARM 


/XXPARM/ 


2.5-11 



2.5-1 (12-1-69) 



DATA BLOCK AND TABLE DESCRIPTIONS 

2.5.1 itiscellaneous Tables IJhich Are Permanently Core Resident,. 

2.5.1.1 laSCENT (0SCAR Entry) 

Description 

A 200 word storage array containing the 0SCAR entry (record) currently being processed. 

Created in ilodule 

The entry is read from the 0SCAR and stored in 0SCEriT by the XSEMi (section 3.3.7) sub- 
routine. Other executive routines that require details cf the current entry will search 0SCENT. 

Table Format 

The 0SCENT format is identical to the 0SCAR (section 2.4.2.1) entry it currently contains. 

2.5.1.2 (5UTPUT (Output headings) 

Description 

A storage array containing problem title, subtitle, label and various headings required by 
the PAGE (section 3.4.24) routine to properly annotate the NASTRAN output. 

Created in Module 

The title, subtitle and label are taken from Case Control Deck cards and stored in 0UTPUT 
by IFPl (section 4.3). Other heading lines may be stored by output modules prior to calling 
PAGE. 

Table Format 

0UTPUT contains sufficient space for seven 128 character lines. The first three lines con- 
tain the title, subtitle, and label. The subsequent three lines contain local headings, and the 
final line contains the plotter ID. Since 4 characters occupy each computer word, the 0UTPUT 
array requires 224 words of storage. 

2.5.1.3 STIME (Solution Time) 

Description 

A storage cell containg the user's estimated solution time. 

Created in Module 

The estimated solution time is taken from a Executive Control Deck card and stored into 
STIME by XCSA (section 4.2) 

Table Format 

STIME consists of a single cell containing the estimated time in integer seconds. 



2.5-2 



MISCELLANEOUS TABLE DESCRIPTIOtiS 

2.5.1.4 XMDMSK (Executive Hodule Decision Mask) 

Description 

Contains the 155 bit master module execution mask (see section 1.10) and a cell indicating 
checkpoint status. 

Created in Module 

The 155 bit master module execution mask is generated and used by XGPI (section 4.7). The 
checkpoint status set on (YES) by XCSA (section 4.2) by the presence of a CHKPNT = YES card in 
the Executive Control Deck. 

Table Format 

The 155 bit mask occupies the low order ?1 bits of the first five words of XMDMSK. The 
sixth v/ord is the checkpoint status (flag). 

2.5.1.5 MSGX (Message Queue) 

Description 

A queue table to hold four word NASTRAN information and error messages between the time 
they are generated by a module and printed by the message writer, MSGWRT (section 3.4.26). 

Created in Module 

Messages may be generated by any NASTRAN module through a call to MESAGE (section 3.4.25). 

Table Format 

Word 1 - Number of messages queued. 

Word 2 - Maximum number of messages queue can hold 

Word 3-6 - Four word message entry (typical) 

Word 6-erid - Aaditional four word message entries 

2.5.1.6 DESCRP (Matrix Description) 

Description 

A storage block used by subroutine INTPK (section 3.5.3) to buffer the matrix unpacking 
procedure. This buffering reduces the number of 1/0 accesses to the particular matrix data 
block. 

Created in Module 

DESCRP is filled and used exclusively by INTPK 

Table Format 

An array with the first word defining the length of the array. 



2.5-3 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.5.1.7 TW13 (Powers of Two) 

De scription 

A 32 word array with each word (starting with 1 in the 32nd word) containing the next power 
of two. 

Created in Module 

The 32 integer values are defined within the IJASTRAN system block data program (SEMDBD). 

Table Format 



Word 32 
Word 31 
Word 30 
Word 29 
etc. 



2.5.1.8 NAMES (Symbolic Names) 



Description 



A series of symbolic names identified with their NASTRAN numeric equivalents. Defines values 
for GIN0 file options, arithmetic types and matrix forms. 

Created in Module 

The values are defined within the NASTRAN system block data program (SEMDBD). 



Table Format 
















Word 


SYMBOL 


VALUE 


Word 


SYMBOL 


VALUE 


Word 


SYMB0L VALUE 


1 


RD 


= 2 


7 


EOFNRW 


= 3 


13 


RECT = 2 


2 


RDREW 


= 


8 


RSP 


= 1 


14 


DIAG = 3 


3 


WRT 


= 3 


9 


RDP 


= 2 


15 


UPPER = 4 


4 


WRTREW 


= 1 


10 


CSP 


= 3 


16 


LOWER = 5 


5 


REW 


= 1 


11 


CDP 


= 4 


17 


SYM = 6 


6 


N0REW 


= 2 


12 


SQUARE 


= 1 


18 
19 


RPW = 7 
IDENT = 8 



2.5.1.9 TYPE (Number Types) 

Description 

A series of properties are defined as a function of a number type. The type may be Real 
Single Precision (RSP-1), Real Double Precision (RDP-2), Complex Single Precision (CSP-3), or 
Complex Double Precision (CDP-4). The properties that may be returned include precision (single, 
double), number of words, and real or complex. 

Created in Module 

The properties are defined within the NASTRAN system block data program (SEMDBD). 



2.5-4 



MISCELLAiJEOUS TABLE DESCRIPTIONS 





Tcsble Format 














Word 
1 


Property (Val 
1 


lues) 




Type 






Precision (RSP) 








2 


2 




Precision RDP) 








3 


1 




Precision (CSP) 


Words (RSP) 






4 


2 




Precision (CDP) 


Words (RDP) 






5 


2 






Words (CSP) 






6 


4 






Words (CDP) 






7 


1 








Real/Complex (RSP 




8 


i 








RDP 




9 


2 








(CSP 




10 


2 








(CDP 


Example 















Assume the number of words required to contain a Complex Single Precision (CSP-3) is desired. 
The third item in the Words array is indexed and found to contain a 2 (words). 



2.5-5 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.5.2 Miscellaneous Tables Not Permanently Core Resident . 

2.5.2.1 GPTAl 

Purpose 

To describe connection and property characteristics of each element. GPTAl is used in 
modules GPl , GP2, GP3 and TAl , and is initialized by the block data program GPTABD. 



Description 

Word 
1 
2 
3 

4-5 

6 
7-8 

9 

10-11 
12 
13 

14 

15 
16 



Lffie 
I 

1 

I 
B 

I 
I 
I 
I 
I 
I 



Item 

Number of entries (i.e., elements) in table 

Pointer to first word of last entry in table 

Number of words per entry in table 

Name of element as it appears on connection card 
(e.g., CR0D) 

Internal element identification number 

ECT record ID and trailer bit for LfJCATE 

Number of words per entry on ECT 

EPT record ID and trailer bit for LOCATE 

Number of words per entry on EPT 

Number of grid points per element 



[repeated 
[for 
(each 
[element 



'+1 : Scalar element with grid point and component code 
: Not a scalar element 
-1 : Scalar element with scalar points only 

Number of words per entry on EST 

Position of first grid point in ECT entry 



2.5-6 



MISCELLANEOUS TABLE DESCRIPTIONS 

2.5.2.2 BITP0S. 
Purpose 

To provide pointers into USET and USETD words for interpreting the nested vector sets in NASTRAN. 
Description 

Word Item 

1 

2 

3 

4 

5 

6 

7 

8 

9 
10 

n 

12 
13 
14 
15 
16 

Note 

All words are integer. 



UM 


Bit 


number 


UO 


Bit 


number 


UR 


Bit 


number 


USG 


Bit 


number 


USB 


Bit 


number 


UL 


Bit 


number 


UA 


Bit 


number 


UF 


Bit 


number 


US 


Bit 


number 


UN 


Bit 


number 


UG 


Bit 


number 


UE 


Bit 


number 


UP 


Bit 


number 


UNE 


Bit 


number 


UFE 


Bit 


number 


UD 


Bit 


number 



2.5-7 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.5.2.3 PLTDAT 

Purpose 

To define plotter-dependent parameters. 

Description 

This table is defined in the PL0TBD block data subprogram. The table is divided into N+2 
20-word sections, where N = number of plotters acceptable by the NASTRAN plotting software. 
Sections 3 to N+2 are the only sections initialized, because each contains values which are depen- 
dent upon the plotter hardware. Section 1 contains values which may vary within the limits of the 
hardware, and Section 2 is simply a duplicate of one of the last N sections corresponding to the 
plotter of interest. 

Section 2 must be filled in by the module writer. The format of Sections 2 to N+2 is as 
follows: 

Description 

Maximum x and y coordinate values acceptable by 
the plotter. 

Number of plotter counts/inch on paper. 

Number of plotter counts per character in the x 
and y directions. 

Maximum length of a line segment. 

Maximum number of pens or line density available 
on the plotter. 

8-9 R 0RIGIN For incremental plotters, the current pen position 

relative to the lower left corner of the plot. 
Otherwise , the location of the lower left corner of 
the plotter relative to its true physical origin. 

/+!, +2, or +3 if the plotter is a microfilm, table 
lor drum plotter, respectively, with typing 
1 capability. 
10 I PLTYPE -1, -2, or -3 if the plotter is a microfilm, table 

/or drum plotter, respectively, with no typing 
'capability (i.e., all characters must be drawn). 

iPLTl if an even parity plot tape is to be generated 
for this plotter. 
PLT2 if an odd parity plot tape is to be generated 
for this plotter. 

12 I PBFSIZ Plot tape physical record size (number of characters] 

!0 if an end-of-file is to be written after every 
plot. 
1 if no end-of-file is to be written on the plot 
tape. 

14-20 Undefined 



Word 


Type 


Name 


1-2 


R 


XYMAX 


3 


R 


CNTSIN 


4-5 


R 


CNTCHR 


6 


R 


MAXLEN 


7 


I 


NPENS 



2.5-8 (12-1-69) 



MISCELLANEOUS TABLE DESCRIPTIONS 



Section 1 must also be filled in by the module writer. However, unlike Section 2, some of 
the parameters may vary from plot to plot, as long as they remain within the limitations imposed 
by the plotter hardware. The format of Section 1 is as follows. 



Word 


Type 


Name 


1 


I 


M0DEL 


2 


I 


PL0TER 


3-6 


R 


REG 



7-8 
9-10 

n 



AXYMAX 

XYEDGE 
CAMNUM 



Description 
Plotter model index 
Plotter index 

Plotter region (x^.^. y^.^. x^^^, y^^^) in which 

the current picture is being drawn. These values 
must be some fraction (between and 1) of words 
7 and 8 (AXYWX). 

Size of the paper used (x,y), less the borders, in 
plotter units. 

Size of the borders (x,y) in plotter units. 

Current selected camera. This word need not be 
filled in, because it is set and used as a communi- 
cation between the SELCAM and SKPFRM subroutines. 



12-20 



Undefined 



Usage 

Sections 1 and 2 are normally setup by the FNDPLT subroutine, except for the plotter region 
values (REG). These values must be setup by the module writer himself. It is essential that both 
these sections be correctly setup, because they are referenced by the entire NASTRAN plotter soft- 
ware package. 

If Sections 1 and 2 are correctly setup by the module writer, he need not subsequently worry 
about such things as compensating for paper margins or different physical plotter origins. He 
need only assume that the plotter origin is located at the lower left corner of the paper where 
the left and bottom borders intersect. The NASTRAN plotter software will automatically compensate 
for the borders and the physical origin. 



2.5-9 (12-1-69) 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.5.2.4 CHAR94 

Purpose 

To provide a table of characters used to generate plot tapes as if the computer were always 
an IBM 7094, This table however is independent of the actual computer used. 

Description 

This is a 240 word table defined in the PL0TBD block data subprogram. It is divided into four 
equal sections of 60 words each. Each entry in each section has a parallel entry in the other 
three sections. 

Section I is a string of all the Hollerith characters acceptable by the plot modules of the 
form IHx, where x is a Hollerith character. 

Section II contains the integer equivalents of the IBM 7094 internal binary characters in the 
same order as Section I. However, near the end of this section are integers representing various 
additional characters not in Section I. These additional characters cannot be expressed in the 
form IHx and are used for special plotter commands. Each entry in this table is a right-adjusted 
two-digit integer with leading zeroes. 

Section III contains the integer equivalents of the IBM 7094 BCD characters as they would 
appear on an even parity tape written on an IBM 7094, in the same order and form as in Section II. 

Section IV contains the integer equivalents of the CDC display character codes so as to pro- 
duce an even parity BCD plot tape as if written on an IBM 7094, in the same order and form as in 
Section II. 

The sequence of characters in each section is as follows: 






1 


2 


3 


4 


5 


6 


7 


8 


9 


A 


B 


C 


D 


E 


F 


G 


H 


I 


J 


K 


L 


M 


N 





P 


Q 


R 


S 


T 


U 


V 


U 


X 


Y 


Z 


( 


) 


+ 


- 


* 


/ 


= 


, 


> 


$ 


1 


b 







character 49 = end of record mark 
character 50 = end of file mark 
characters 51-53 = special characters, 
characters 54-60 = 

Note 

In Section I, characters 49-60 = 0. 

Usage 

Section I is basically used for calculating an index into the other two sections by comparing 
an arbitrary Hollerith character with each character in Section I until a match is found. Once 
this is done, the index is used to extract the corresponding entry from either Section II or III, 
depending on whether an odd or even parity plot tape is being generated. If the computer is an 
IBM 7094, only Section II is used, and if the computer is a CDC 6600 and an even parity plot tape 
is being generated. Section IV is used instead of Section III. 

2.5-10 (12-1-69) 



MISCELLANEOUS TABLE DESCRIPTIONS 



2.5.2.5 XXPARM 

Purpose 

To define the plot tape buffer size, the camera to be used, the number of blank frames of 
film to be inserted between plots, the plotter model name, and the paper size to be used on table 
plotters. 

Description 

This table is defined as follows in the PL0TBD block data subprogram. 



Word 
1 
2 



4-5 
8-9 



h21 
I 
I 

I 

I, or B 
R 



Name Description 

BUFSIZ Plot tape buffer size 

CAMERA Plotter camera to be used (appropriate only on a 
microfilm plotter). 

BFRAMS Number of blank frames of film to be inserted 
between plots (appropriate only on a microfilm 
plotter) . 

PLTMDL Plotter model identification. 

PAPSIZ Width and height of the paper to be used (appropri- 
ate only on table plotters). 



Usage 

The initial values of these variables are as follows: 

BUFSIZ = must be set by the module writer 

CAMERA = 2 (paper output only) 

BFRAMS = 1 

PLTMDL = 4020, (integer) 

PAPSIZ = 8.5, 11.0 

This table's actual size is 152 words. The remainder of the table is initialized for the structur- 
al plotter module, PL0T, but may be used by the programmer for anything he desires in other plot- 
tincj modules. 



2.5-11 (12-1-69) 



DATA BLOCK AND TABLE DESCRIPTIONS 



2.5.2.6 SYMBLS 

Purpose 

To provide a table of indices into the CHAR94 and CHRDRW tables used to type or draw pre- 
defined plotter symbols. 

Description 

The table is defined in the PL0TBD block data subprogram. There is room for up to 20 indices 
for each plotter. However, the same number of indices must be defined for each plotter. The 
format of the table is as follows: 

Description 
Number of symbols defined for each plotter (currently = 9). 
Symbol indices for plotter 1. 
Symbol indices for plotter 2. 
Symbol indices for plotter 3. 



There are as many groups of symbol indices as there are available plotters. The symbols 
defined for each plotter are as follows: 

Symbol 1 = x 

Symbol 2 = * 

Symbol 3 = + 

Symbol 4 = - 

Symbol 5 = • (dot, not a period). 

Symbol 6 = circle 

Symbol 7 = square 

Symbol 8 = diamond 

Symbol 9 = triangle 

Should any of these symbols not be available on a plotter, a substitution of another symbol must 
be made. 

Usage 

This table is used by the SYMBOL subroutine. 



Word 


Type 





I 


1-20 


I 


21-40 


I 


41-60 


I 



2.5-12 (12-1-69) 



MISCELLANEOUS TABLE DESCRIPTIONS 



2.5.2.7 CHRDRW 

Purpose 

To define the combination of lines needed to draw alphanumeric characters and symbols. 

Description 

This table is defined in the PLJITBD block data subprogram. The table is divided into two 
sections. Section I is a list of indices into Section II, used to locate the data needed to draw 
characters. The first 48 indices in Section I correspond to the 48 characters listed in Section I 
of the CHAR94 table. The last 7 indices are used for drawing the special characters listed in the 
SYMBLS table. If an index is negative, it is an index into Section I instead of Section II. This 
occurs when a duplicate character exists (e.g., a zero, the letter "0", and the symbol for a 
circle). 

Section II of this table defines the (integer) coordinates of the starting and ending points 
of the straight lines to be drawn in order to draw a character or symbol. In general, the neces- 
sary straight lines are contiguous, so that the end point of one line is the starting point of the 
next, etc. In some cases, this is either impractical or impossible (e.g., *, +, =, etc.). In 
such a situation, the starting point of aline is negative, meaning that it is not to be connected 
to the end point of the preceding line. 



The characters defined in Section II are based upon 6x6 square characters, 
section are simply integer coordinates within a 6x6 square. 

The format of this table is as follows: 



The values in this 



Word 


Type 


Name 





I 


LSTCHR 


1-60 


I 


CHRIND 


61-760 


I 


CHR 



Description 

Name of characters and symbols referenced in 
Section I (=52). 

Section I - "LSTCHR" indices Into Section II. 

Section II = (x,y) pairs defining the lineal 
representation of 6x6 square characters. 



Usage 



This table is used by the DRWCHR subroutine. 



2.5-13 (12-1-69) 



INTRODUCTION 
3.1 INTRODUCTION 

Section 3 contains descriptions of subroutines not an integral part of a module. Those sub- 
routines which are an integral part of a module are discussed in section 4, Module Functional 
Descriptions. Section 3.2 contains an alphabetical index of entry points of routines documented 
in section 3. A similar index of entry points documented in section 4 can be found in section 
4.1.3. 

Subroutine descriptions have been partitioned into 3 classifications: executive, utility and 
matrix subroutine descriptions, documented in sections 3.3. 3.4, and 3.5 respectively. 

Descriptions of the plotting utility routines (e.g., AXIS, section 3.4.40; AXISi, section 
3.4.41) refer to plotters by number or the letter "i", and to plotter models by number only. The 
correspondence of these numbers to plotter hardware is given in Table 1. Further details can be 
found in section 4 of the User's Manual. 



3.1-1 (12-1-69) 



SUBROUTINE DESCRIPTIONS 



Table 1, Correspondence Between External and Internal Plotter and Model Names and Numbers. 



External 
plotter name 

BL 

EAI 
SC 



CALCSIMP 



DD 



NASTRAN 



External 
model name 



|STE.30 
UtE.30 

(3500,30 
{3500,45 

4020,0 

'765,205 
765,210 
765,105 
765,110 
763,205 
763,210 
763,105 
763,110 
565,205 
565,210 
565,105 
565,110 
565,305 
565,310 
563,205 
563,210 
563,105 
563,110 
563,305 

\563,310 

80, B 

M,0 
T,0 
D,0 
M,l 
T,l 
D.l 



Internal 
plotter number 



Internal 
model number 



5 
4 
5 
4 
7 
6 
7 
6 
5 
4 
5 
4 
5 
4 
7 
6 
7 
6 
7 
6 



10 
11 
11 
10 
11 
11 



1 

1 

4 
4 
5 
5 
4 
4 
5 
5 
2 
2 
3 
3 
1 
1 
2 
2 
3 
3 
1 
1 



+ 1 
+2 
+3 

-1 



where: 



BL 

EAI 

SC 



Benson Lehner 

Electronic Associates Inc. 

Stromberg Carlson 



3.1-2 (12-1-69) 



INTRODUCTION 
Table 1. Correspondence Between External and Internal Plotter and Model Names and Numbers (Cont'd) 



CALCUMP = California Computing 

DD = Data Display 

NASTRAN = NASTRAN General Purpose Plotter 



3.1-3 (12-1-69) 



ALPHABETICAL INDEX OF ENTRY POINTS FOR SUBROUTINE DESCRIPTIONS 



3.2 ALPHABETICAL INDEX OF ENTRY POINTS FOR SUBROUTINE DESCRIPTIONS. 



Section Number 


Entry Point 


Subroutine Description 


3.5.10 


ADD 




ADD 


3.4.1 


ANDF 




MAPFNS 


3.4.40 


AXIS 




AXIS 


3.4.41 


AXIS3 




AXISi 


3.4.41 


AXISIO 




AXISi 


3.4.7 


BCKREC 




BCKREC 


3.3.5 


BGNSYS 




ENDSYS 


3.5.1 


BLDPK 




BLDPK 


3.5.1 


BLDPKI 




BLDPK 


3.5.1 


BLDPKN 




BLDPK 


3.3.2 


BTSTRP 




BTSTRP 


3.5.5 


CALCV 




CALCV 


3.5.16 


CDC0MP 




CDC0MP 


3,4.4 


CL0SE 




CL0SE 


3.4.18 


CLSTAB 




CLSTAB 


3.4.1 


C0MPLF 




MAPFNS 


3.5.16 


C0M12 




CDC0MP 


3.3.12 


C0NMSG 




C0NMSG 


3.4.1 


C0RSZ 




MAPFNS 


3.4.1 


C0RWDS 




MAPFNS 


3.5.16 


CTRNSP 




CDC0MP 


3.5.15 


DEC0MP 




DEC0MP 


3.5.15 


DDL00P 




DEC0MP 


3.5.15 


DL00P 




DEC0MP 


3.5.21 


DMPY 




DMPY 


3.4.68 


DRWCHR 




DRWCHR 


3.4.62 


EJECT 




EJECT 


3.5.22 


ELIM 




ELIM 


3.3.5 


ENDSYS 




ENDSYS 


3.4.9 


E0F 




E0F 






3.2-1 (12- 


■1-69) 



Page Number 
3.5-19 
3.4-1 
3.4-70 
3.4-72 

3.4-72 
3.4-9 

3.3-6 

3.5-1 

3.5-1 

3.5-1 

3.3-2 

3.5-12 

3.5-62 

3.4-5 

3.4-26 

3.4-1 

3.5-63 

3.3-16 

3.4-1 

3.4-1 

3.5-63 

3.5-44 

3.5-60 

3.5-60 

3.5-71 

3.4-115 

3.4-105 

3.5-73 

3.3-6 

3.4-11 



SUBROUTINE DESCRIPTIONS 



Section Number 


Entry Point 


Subroutine Description 


3.5.23 


FACT0R 


FACT0R 


3.5.17 


FBS 


FBS 


3.5.15 


FINDC 


DEC0MP 


3.5.15 


FINWRT 


DEC0MP 


3.4.17 


FNAME 


FNAME 


3.4.69 


FNDPLT 


FNDPLT 


3.4.15 


FREAD 


FREAD 


3.4.6 


FWDREC 


FWDREC 


3.5.15 


GENVEC 


DEC0MP 


3.5.19 


GFBS 


GFBS 


3.4.12 


GINi3 


6IN0 


3.4.61 


GIN0I0 


GIN0I0 


3.4.32 


GMMATD 


GMMATD 


3.4.33 


GMMATS 


GMMATS 


3.3.4 


GNFIAT 


GNFIAT 


3.3.9 


GNFIST 


GNFIST 


3.4.14 


G0PEN 


G0PEN 


3.4.44 


IDPL0T 


IDPL0T 


3.4.45 


INTGPT 


INTGPX 


3.4.45 


INTGPX 


INTGPX 


3.4.46 


INTLST 


INTLST 


3.5.3 


INTPK 


INTPK 


3.5.3 


INTPKI 


INTPK 


3.4.34 


INVERD 


INVERD 


3.4.35 


INVERS 


INVERS 


3.4.47 


LINE 


LINE 


3.4.48 


LINEl 


LINEi 


3,4.48 


LINE2 


LlNEi 


3.4.48 


LINE3 


LINEi 


3.4.48 


LINE4 


LINEi 


3.4.48 


LINE9 


LINEi 


3.4.48 


LINEIO 


LINEi 
3.2-2 (12-1-69) 



Page Nun;ber 
3.5-74 
3.5-64 
3.5-57 
3.5-54 
3.4-25 
3.4-117 
3.4-23 
3.4-8 
3.5-54 
3.5-67 
3.4-15 
3.4-103 
3.4-49 
3.4-52 
3.3-5 
3.3-12 
3.4-22 
3.4-75 
3.4-76 
3.4-76 
3.4-77 
3.5-7 
3.5-7 
3.4-53 
3.4-54 
3.4-78 
3.4-79 
3.4-79 

3.4-79 
3.4-79 
3.4-79 

3.4-79 



ALPHABETICAL INDEX OF' ENTRY POINTS FOR SUBROUTINE DESCRIPTIONS 



Section Number 


Entry Point 
Li3CATE 


Subroutine Description 


Page Num; 


3.4.30 


PREL0C 




3.4-44 


3.5.14 


L00P 


SDC0MP 




3.5-42 


3.4.1 


LSHIFT 


MAPFNS 




3.4-1 


3.4.36 


MAT 


PREMAT 




3.4-55 


3.4.28 


MATDUM 


MATDUM 




3.4-42 


3.5.6 


MERGE 


PARTN - 


MERGE 


3.5-13 


3.4.25 


MESAGE 


MESAGE 




3.4-39 


3.5.9 


MPART 


UPART 




3.5-18 


3.5.12 


MPYAD 


MPYAD 




3.5-22 


3.4.26 


MSGWRT 


MSGWRT 




3.4-40 


3.5.15 


0NETW0 


DEC0MP 




3.5-54 


3.4.2 


0PEN 


0PEN 




3.4-3 


3.4.13 


0PNC0R 


0PNC0R 




3.4-20 


3.4.1 


0RF 


MAPFNS 




3.4-1 


3.5.2 


PACK 


PACK 




3.5-5 


3.4.24 


PAGE 


PAGE 




3.4-38 


3.4.24 


PAGEl 


PAGE 




3.4-38 


3.4.24 


PAGE2 


PAGE 




3.4-38 


3.5.6 


PARTN 


PARTN - 


MERGE 


3.5-13 


3.4.22 


PEXIT 


PEXIT 




3.4-36 


3.4.63 


PLAMAT 


PLAMAT 




3.4-106 


3.4.67 


PLTSET 


PLTSET 




3.4-113 


3.4.30 


PREL0C 


PREL0C 




3.4-44 


3.4.36 


PREMAT 


PREMAT 




3.4-55 


3.4.39 


PRETAB 


PRETAB 




3.4-67 


3.4.37 


PRETRD 


PRETRD 




3.4-64 


3.4.38 


PRETRS 


PRETRS 




3.4-66 


3.4.49 


PRINT 


PRINT 




3.4-81 


3.4.20 


RCARD 


RCARD 




3.4-32 


3.5.15 


RC0RE 


DEC0MP 




3.5-58 


3.4,13 


RDC0R 


0PNC0R 




3.4-20 


3.4.50 


RDM0DE 


RDM0DX 
3.2-3 (12-1-69) 




3.4-83 



SUBROUTINE DESCRIPTIONS 



Section Number 


Entry Point 


Subroutine Description 


Page Number 


3.4.50 


RDM0DX 


RDM0DX 


3.4-83 


3.4.50 


RDM0DY 


RDM0DX 


3.4-83 


3.4.16 


RDTRL 


WRT1 RL 


3.4-24 


3.4.50 


RDW0RD 


RDM0DX 


3.4-83 


3.4.5 


READ 


READ 


3.4-6 


3.4.8 


REWIND 


REWIND 


3.4-10 


3.4.1 


RSHIFT 


MAPFNS 


3.4-1 


3.5.6 


RULER 


PARTN - MERGE 


3.5-14 


3.4.51 


SCL0SE 


SGIN0 


3.4-85 


3.5.14 


SDC0MP 


SDC0MP 


3.5-30 


3.5.8 


SDRIB 


SDRIB 


3.5-17 


3.3.6 


SEARCH 


SEARCH 


3.3-8 


3.4.43 


SELCAM 


SELCAM 


3.4-74 


3.3.3 


SEMINT 


SEMINT 


3.3-3 


3.4.51 


SE0F 


SGIN0 


3.4-85 


3,4.42 


SKPFRM 


SKPFRM 


3.4-73 


3.4.10 


SKPFIL 


SKPFIL 


3.4-12 


3.5.20 


S0LVER 


S0LVER 


3.5-69 


3.4.51 


S0PEN 


SGIN0 


3.4-85 


3.4.31 


S0RT 


S0RT 


3.4-46 


3.5.7 


SSG2A 


SS62A 


3.5-16 


3.5.13 


SSG2B 


SSG2B 


3.5-29 


3.5.11 


SSG2C 


SSG2C 


3.5-20 


3.5.18 


SSG3A 


SSG3A 


3.5-66 


3.3.11 


SSWTCH 


SSWTCH 


3.3-15 


3.4.52 


STPL0T 


STPL0T 


3.4-87 


3.4.51 


SWRITE 


S6IN0 


3.4-85 


3.4.53 


SYMB0L 


SYMB0L 


3.4-88 


3.5.15 


T 


DEC0MP 


3.5-58 


3.4.39 


TAB 


PRETAB 


3.4-67 


3.4.29 


TABPRT 


TABPRT 


3.4-43 


3.4.21 


TAPBIT 


TAPBIT 
3.2-4 (12-1-69) 


3.4-35 



ALPHABETICAL INDEX OF ENTRY POINTS FOR SUBROUTINE DESCRIPTIONS 



Section Number 


Entry Point 


3.5,15 


TFIN 


3.4.54 


TIPE 


3.4.23 


TMTC(G0 


3.5.24 


TRANPl 


3.4.37 


TRANSD 


3.5.15 


TRANSP 


3.4.38 


TRANSS 


3.5.25 


TRNSP 


3.3.13 


TTLPPG 


3.4.55 


TYPEl 


3.4.55 


TYPE2 


3.4.55 


TYPE3 


3.4.55 


TYPE9 


3.4.55 


TYPEIO 


3.4.56 


TYPFLT 


3.4.57 


TYPINT 


3.5.4 


UNPACK 


3.5.9 


UPART 


3.4.27 


USRMSG 


3.4,58 


WPLTl 


3.4.59 


WPLT2 


3.4.60 


WPLT3 


3.4,64 


WPLT4 


3.4.65 


WPLT9 


3.4.66 


WPLTIO 


3.4.3 


WRITE 


3.4.13 


WRTC0R 


3.4.16 


WRTTRL 


3.3.10 


XE0T 


3.4.11 


xg:n0 



Subroutine Description 


Page Number 
3.5-58 


DEC0MP 


TIPE 


3.4-90 


TMT0Gja 


3.4-37 


TRANPl 


3.5-75 


PRETRD 


3.4-64 


DEC0MP 


3.5-53 


PRETRS 


3.4-66 


TRNSP 


3.5-76 


TTLPPG 


3.3-17 


TYPEi 


3.4-92 


TYPEl 


3.4-92 


TYPEi 


3.4-92 


TYPEi 


3.4-92 


TYPEi 


3.4-92 


TYPFLT 


3.4-94 


TYPINT 


3.4-96 


UNPACK 


3.5-10 


UPART 


3.5-18 


USRMSG 


3.4-41 


WPLTl 


3.4-98 


WPLT2 


3.4-100 


WPLT3 


3.4-102 


WPLT4 


3.4-108 


WPLT9 


3.4-110 


WPLTIO 


3.4-111 


WRITE 


3.4-4 


0PNC0R 


3.4-20 


WRTTRL 


3.4-24 


XE0T 


3.3-14 


XGIN0 


3.4-13 



3.2-5 (12-1-69) 



SUBROUTINE DESCRIPTIONS 



Section Number 


Entry Point 


3.5.15 


xLiaiap 


3.4.1 


X(3RF 


3.4.19 


XRCARD 


3.3.8 


XSEHXX 


3.3.1 


XSEMl 


3.3.7 


XSEM2 


3.3.7 


XSEM3 


3.3.7 


XSEM4 


3.3.7 


XSEM5 


3.3.7 


XSEM5 


3.3.7 


XSEM7 


3.3.7 


XSEM9 


3.3.7 


XSEMIO 


3.3.7 


XSEMl 1 


3.3.7 


XSEMl 2 


3.3.7 


XSEMl 3 


3.3.7 


XSEMl 4 


3.5.1 


ZBLPKI 


5.5.3 


ZNTPKI 



Subroutine Description 


Page Number 


DEC0MP 


3.5-60 


MAPFNS 


3.4-1 


XRCARD 


3.4-27 


XSEMXX 


3.3-11 


XSEMl 


3.3-1 


XSEMi 


3.3-9 


XSEMi 


3.3-9 


XSEMi 


3.3-9 


XSEMi 


3.3-9 


XSEMi 


3.3-9 


XSEMi 


3.3-9 


XSEMi 


3.3-9 


XSEMi 


3.3-9 


XSEMi 


3.3-9 


XSEMi 


3.3-9 


XSEMi 


3.3-9 


XSEMi 


3.3-9 


BLDPK 


3.5-1 


INTPK 


3.5-7 



3.2-6 (12-1-69) 



EXECUTIVE SUBROUTINE DESCRIPTIONS 

3.3 EXECUTIVE SUBROUTINE DESCRIPTIONS. 

3.3.1 XSEMI (Executive Sequence Monitor, Preface ) . 

3.3.1.1 Entry Point: XSEMI . 

3.3.1.2 Purpose 

To initiate the execution of the NASTRAU Preface. 

3.3.1.3 Calling Sequence 
CALL XSEM1 

3.3.1.4 Method 

Subroutine BTSTRP is called to initialize machine dependent data, and then subroutine SEMKJT 
is called to execute the program Preface (i.e. input ^^ile processors and DMAP orooram compiler). 
After initiating the problem, modules are called as directed by the 0SCAR until a module is 
encountered in the (?SCAR that does not reside in link 1 at which time XSEMI calls subroutine 
ENDSYS to load a new link. 

3.3.1.5 Design Requirements 

XSEMI must reside in the core resident portion of link 1. Link 1 is not re-entrant which 
means that once the program leaves link 1 it can never transfer control back to link 1. Functional 
DflAP modules can not reside in link 1. Open core is used for a GIN0 buffer with named conmon block 
/ESFA/ defining the beginning of open core. See the second paragraph of the design requirements 
section of the subroutine description XSEMi (see section 3.3.7) for details on files, data blocks, 
and common blocks necessary for operation. 



3.3-1 



SUBROUTINE DESCRIPTIONS 

3.3.2 BTSTRP (Bootstrap Generator) . 

3.3.2.1 Entry Point: BTSTRP. 

3.3.2.2 Purpose 

Determines the machine type and initializes the machine dependent constants and masks 
within the NASTRAN system block data program (SEMDBD). 

3.3.2.3 Calling Sequence 
CALL BTSTRP 

3.3.2.4 Method 

The machine type (IBM 7094, IBM S/360, Univac 1108, CDC 6600) is determined by inspection of 
the machine binary word length and the known methods of representing negative integers (sign 
and magnitude or ones/twos complement) using the following algorithm: 

1. If the ones complement (C0MPLF see section 3.4.1) of -1 is greater than 2, the machine 
is the IBM 7094. If not, the machine is an IBM S/360, Univac 1108 or CDC 6600. (i.e., only 
the sign and magnitude representation of -1 on the 7094 will yield a large (> 2) positive 
value when complemented.) 

2. Shift (RSHIFT see section 3.4.1) a binary machine word of all I's to the right thirty- 
two binary places. Compare the resulting value to 15. If the value is less than fifteen, 
the machine is the 32 bit IBM S/360; equal to fifteen, the 36 bit Univac 1108; and greater 
than fifteen, the 60 bit CDC 6600. 

Once the machine type is known, the proper constants and masks are selected from assembled tables. 

3.3.2.5 Design Requirements 

This subroutine must be irodified if it is to operate with other than the four machine types 
listed above. 



3.3-2 



EXECUTIVE SUBROUTINE DESCRIPTIOriS 

3.3.3 SEMINT (Sequence Monitor Initialization ). 

3.3.3.1 Entry Point: SEMINT. 

3.3.3.2 Purpose 

To execute the Preface of a NASTRAM problem solution. 

3.3.3.3 Calling Sequence 
CALL SEMINT 

3.3.3.4 Method 

The first card of the NASTRAN data deck is read from the svstem innut file and its imane 
stored in blank C0MM0N. XRCARD is called to convert the card. If the name of the card is 
NASTRAN, the card is echoed and keywords are identified and appropriate words of /SYSTEM/ are 
reset to the input values. If an unidentified keyword is detected, or the card has a format error, 
a message is printed and the N0G0 flag is turned on. The first word of blank C0MM0N is set to one 
if the card was a NASTRAN card, to zero otherwise. Then GNFIAT is called to generate the initial 
FIAT. XCSA is called to read and process the Executive Control Deck. IFPl is called to read and 
process the Case Control Deck. XS0RT is called to read and sort the Bulk Data Deck. If bulk 
data is present, IFP is called to process it. If the problem is a conical shell problem, IFP3 is 
called to further process the bulk data. If the current run is to prepare a User's Master File, 
UMFEDT is called and control is returned to XS0RT for each new problem to be written on the UMF. 
Otherwise, XGPI is called to perform General Problem Initialization and then return is made to 
XSEMl signifying completion of the Preface. 

3.3.3.5 Design Requirements 

If the NASTRAN card is present, it must be the first card of the data deck. 
3.3.3.5 Diagnostic Messages 

U^^IDENTIFIED NASTRAN KEY;J0RD . ACCEPTABLE KEYWORDS F0LL0'J-- 

BUFFSIZE 

C(3NFI6 

MAXFILES 

MAX0PEN 

SYSTEM 



3.3-3 



SUBROUTINE DESCRIPTIONS 

Self-explanatory. 

riASTRAN CARD D0ES N0T HAVE CORRECT F0RMAT. 

Typical errors include non-intoger values or continuation of the card followinq an = sign. 

See section 6.3.1 for further details on the UASTRAN card. 



3.3-4 



EXECUTIVE SUBROUTINE DESCRIPTIONS 

3.3.4 GNFIAT (Generate FIAT) . 

3.3.4.1 Entry Point: GNFIAT. 

3.3.4.2 Purpose 

Determines the number of logical files available within the computer hardware and software 
configuration and places an entry for each into FIAT or XFIAT. 

3.3.4.3 Calling Sequence 
CALL GNFIAT 

GNFIAT must be called once and only once as the first call from the preface. 

3.3.4.4 Method 

Each computer configuration has its own independent subroutine to accomplish the necessary 
functions of GNFIAT. The subroutine interrogates unit blocks, data definition cards, file tables, 
etc. to determine the number of logical files available within the configuration. As each 
logical file is sensed, it is determined whether the file has been assigned to a ohysical magnetic 
tape or some bulk storage device such as disk or drum. Each file has a logical name and/or 
number for identification. These file ID's are stored in FIAT, XFIAT or both depending on 
several factors. As the file ID is stored, a physical tape flag is set where appropriate. The 
factors that determine FIAT vs. XFIAT storage are as follows: 1) the first PFIST (see section 
2.4 for a description of the FIST) files sensed are always entered into XFIAT, 2) except for the 
first file (always the P00L) , all of the first PFIST files without tape flags are also entered 
into FIAT, and 3) all other files are entered into FIAT only. 

3.3.4.5 Design Requirements 

Since GNFIAT routines are computer hardware/software dependent, operational requirements 
may differ at various times. See appropriate commented assembly listing if difficulties or 
error codes are encountered. 



3.3-5 



SUBROUTINE DESCRIPTIONS 

3.3.5 ENDSYS (End-of-Link) . 

3.3.5.1 Entry Points: ENDSYS, BGNSYS. 

3.3.5.2 Purpose 

For ENDSYS, to save various NASTRAN core- resident Executive Tables on a scratch file for use 
in comnunicating with the next link requested. 

For BGNSYS, to restore the NASTRAN Executive Tables saved by ENDSYS and to position the 
0SCAR at the correct entry to be executed in the resident link. 

3.3.5.3 Calling Sequences 
CALL ENDSYS(LINK,X.REWFLG) 

LINK - BCD name of the link. The naming convention is: NSOl = link 1, NS02 = link 2, 

etc. 
X - Dependent on machine type. For the IBM 7094 only, X (6 BCD characters) specifies 

the unit where the links are stored. Not used on other machines. 

REWFLG = indicates LINK is ahead of current link (i.e. we are going from link N to 
link N + K, K » 0) . IBM 7094 only; not used on other machines. 

REWFLG = 1 indicates LINK is behind current link (i.e. we are going from link N to 
link N + K, K < 0). IBM 7094 only; not used on other machines. 

CALL BGNSYS. 
3.3.5.4 Method 

For ENDSYS, a search is made for an empty file and when found the Executive Tables are 
written (saved) on it. A pointer to the save file is saved in blank common or written on a 
system file for use by BGNSYS when the new link is loaded. Subroutine SEARCH is then called to 
load the requested link. 

BGNSYS is called after a new link is loaded. The pointer to the save file containing the 
Executive Tables is obtained from either blank common or a system file, and the Executive Tables 
are reloaded into core. The 0SCAR is positioned at the correct entry to be executed, and a 
RETURN is made to the calling routine. 



3.3-6 



EXECUTIVE SUBROUTINE DESCRIPTIONS 

3.3.5.5 Design Requirements 

Program links are usually considered to be physically seoarate nrograms, essentially 
independent of one another except for the fact that the operating system executive (not the NASTRAN 
executive) provides a means by which control can be transferred from one link to another when 
requested by the user. The means by which the operating system executive transfers control from 
one link to another is dependent upon the machine and the system being used. For some future 
machiries there may be no means for building physically separate links so the links become 
logical subsets of one huge program. 

No matter how the links are formed it is necessary, when transferring from one link to 
another, that all file assignments be preserved as well as their status (i.e. don't rewind the tapes), 

Open core is used for GIN0 buffer area and the beginning of open core is defined by named 
common block /ESFA/. 

If no save file is available or if any of the Executive Tables to be written exceeds 900 
words, the job is terminated. 



3.3-7 



SUBROUTINE DESCRIPTIONS 

3.3.0 SEA RCH (Search. Load, and Execute Link) . 

3.3.6.1 Entry Point: SEARCH. 

3.3.6.2 Purpose 

SEARCH locates (searches for) a particular link of the NASTRAN system on ths Link Storaao 
File, loads the link into the computer memory and transfers execution control to the link entry 
point XSEMi, i = 2,3 

3.3.5.3 Calling Sequence 

CALL SEARCH(LKNAM,LKFIL,REW) 

LKNAM = 4 character symbolic name of link, i.e., NSOl , NS02 for link 1, link 2, etc. 

LKFIL = symbolic name of the Link Storage File (IBM 7094 only) 

REW = set non-zero to position a sequential Link Storage File to its beginning 
(IBM 7094 only) 

3.3.6.4 Method 

SEARCH is machine dependent. It interfaces with the machine operatinn system to provide a 
multi-link capability. Each link is a somewhat arbitrary part o-^ the complete NASTRAN svstem. 
The division into links was necessary only because of the size limitation ^or program complexes 
imposed by the various operating systems. The linking technique for each machine is discussed 
in section 5 of the Programmer's Manual. 

3.3.G.5 Design Requirements 

Only the IBM 7094 system requires the Link Storage File to be named (LKFIL) and, since it is 
sequential, provides the capability of rewinding it following a SEARCH call. All other systems 
provide random access (disk, drum) Link Storage Files. 

3.3.6.5 Diagnostic Messages 

Individual SEARCH subroutines may abnormally terminate due to hardware malfunction. See 
appropriate commented assembly listing if difficulties or error codes are encountered. 



3.3-8 



EXECUTIVE SUBROUTINE DESCRIPTIONS 

3,3.7 XSEMi (Link i Main Program, i = 2,3, ... 

3.3.7.1 Entry Point: XSEMi. 

3.3.7.2 Purpose 

To get the next module to be executed from the 0SCAR. initialize the module and call it 
if it is in link i, or transfer to the link in which module resides if it is not in link i. 

3.3.7.3 Calling Sequence 

Example: CALL XSEM2, where XSEM2 is the entry point of link 2 

3.3.7.4 Method 

Subroutine BTSTRP is called to initialize machine dependent data, and then subroutine BGNSYS 
is called to reload Executive Tables saved from the previous link. 

The next 0SCAR entry is read into core and processed. If the entry is for a functional 
module, subroutine GNFIST is called to link files with input, outnut and scratch data blocks 
needed by the module. Variable parameter values needed by the module are transferred to blank 
common from table VPS which resides in named common block /XVPS/. Constant values in the ^^SCA? 
entry parameter section are transferred to blank common. 

The link specification table in named common block /XLINK/ is examined to see i-*" the module 
resides in this link. If it does, the module is called. Upon returninn from the module, the 
diagnostic message queue is checked and message writer MSGWRT is called if there are messages 
queued. Begin and end execution times are printed out for functional modules. 

The next 0SCAR entry is read and the process is repeated until a module is encountered which 
'does not reside in this link, at which time subroutine ENDSYS is called to initiate loading of the 
link containing the module. 

3.3.7.5 Design Requirements 

XSEMi must reside in the core resident portion of link i. Link i is re-entrant which means 

program control can be transferred to this link as often as needed. Onen core is used for a 

GIN0 buffer with named common block /ESFA/ defining the beninninq o^ ooen core, ^n i/ISCA" entry 

cannot be greater than 200 words. 



3.3-9 



SUBROUTINE DESCRIPTIONS 

Files, data blocks and named common blocks needed by XSEMi are listed below, along with type 
of access required (i.e. fetch and/or store data) and reasons for use. 

1. Data Pool File - fetch. Contains X0SCAR data block. 

2. X0SCAR - fetch. Contains jJSCAR entry to be processed. 

3. Common /XLINK/ - fetch. Contains link soecification table. 

4. Common /XFIST/ - store. Initialized prior to callinn GNFIST. 

5. Common /XPFIST/ - fetch. Contains parameter needed to initialize FIST table, 
o. Common /0SCENT/ - fetch. Contains 0SCAR entry to be nrocessed. 

7. Common /ESFA/ - store. Defines beginning of open core area used by GIN0 buffer. 

8. Common /XVPS/ - fetch. Contains variable parameter values needed to initialize module 
to be executed. 

9. Common /MSGX/ - fetch. Contains diagnostic message queue. 

10. Common /SEM/ - fetch. Contains SCO names of links NSOl , NS02 

3.3.7.6 Diagnostic Messages 

A message is written if the module to be executed required more files than are available. 
The job is then terminated. 



3.3-10 



EXECUTIVE SUBROUTINE DESCRIPTIONS 

3.3.8 XSEMXX (Sequence Monitor - Deck Generator) . 

3.3.8.1 Entry Point: XSEMXX. 

3.3.8.2 Purpose 

To provide a model from which all other XSEMi (i = link number) subroutines except XSEMl 
can be made. 

See section 6.11, which discusses how to generate a link driver subroutine. 



3.3-11 



SUBROUTINE DESCRIPTIONS 

3.3.9 GNFIST (Generate FIST ) 

3.3.9.1 Entry Point: GNFIST. 

3.3.9.2 Purpose 

To set up the proper linkage between data blocks and the files they reside on in preparation 
for executing the functional module requiring the data blocks. 

3.3.y.3 Calling Sequence 

CALL GNFIST(DBN,FISTNM,M0DN0) 

DBN - Data block name (Two word BCD array - 8 characters total) 

FISTNM - Data block identification (GIN0 file number) used by functional module 
(integer) . 

M0DN0 - 0SCAR record number of functional module to be executed (integer). M13DN0 
indicates to the calling routine what action was taken by GNFIST. 

M0DN0 ' 0, data block assigned a file or it was purged. 

M0DN0 = 0, fatal error detected. 

M0DN0 • 0, data block not assigned a file, GNFIST called Executive Segment 
File Allocator (XSFA) 

3.3.9.4 Method 

If the data block is purged, GNFIST returns to the calling routine with M0DN0 - 0. A 
data block is purged if it is an input which has not been generated or its status is purged or 
DBN =0. 

If an input data block resides on the Data Pool File and needs to be unpooled, GNFIST calls 
the file allocator (XSFA) to unpool all inputs to the module which reside on the Data Pool File 
that need to be unpooled. GHFIST then returns to the calling routine with H0DN0 < 0. The other 
condition under which XSFA is called is if a file has jiot^ been allocated to a non-purged output 
data block or scratch data block needed by the module. 

A file is allocated to a data block when the data block name apnears in the FIAT table, 
located in named common block /XFIAT/, as unpurged. Inout, outnut and scratch data blocks which 
have been assigned to a file and are required by the functional module, have their FISTNM's entered 



3.3-12 



EXECUTIVE SUBROUTINE DESCRIPTIONS 

in the FIST table which is located in named common block /XFIST/. FIST entries are linked to 
the DBN's in the FIAT table which in turn links the data block to a file. This completes the 
linking of functional module data blocks to their files. 

Output data blocks cannot reside on the Data Pool File, so 6NFIST checks for this and if 
found, the OBN and all DBN's equivalenced to it are deleted from the DPL table located in named 
common /XDPL/. 

3.3.9.5 Design Requirements 

GNFIST resides in the core resident portion of a link. It does not use onen core and the 
only restriction is that the FIST table be large enough to hold all FISTNM's for a module. 

The named common blocks needed by GNFIST are listed below, along with type of access 
required (i.e. fetch and/or store data) and reasons for use. 

1. C(3MM0N/XFIST/ - Store. 

Used to store FISTNM's and link FISTNM's with their corresponding DBN's in FIAT. 

2. CfilMM0N/XFIAT/ - Fetch and store. 

Used to determine status of DBN's. The FIAT table is altered if unpooling of input 
data blocks is necessary. 

3. C0MM0N/XDPL/ - Fetch and store. 

Used to determine status of input DBN's and is altered if outnut DBN's appear in it. 

4. C0MM0N/0SCENT/ - Fetch. 

Contains 0SCAR entry for functional module to be executed. Used to alter FIAT when 
input DBN's need to be unpooled. 

3.3.9.6 Diagnostic Messages 

GNFIST detects overflow in FIST table and sends message to terminate job. 



3.3-13 



SUBROUTINE DESCRIPTIONS 

3.3.10 XEgT (End-of-Tape ). 

3.3.10.1 Entry Point: XE0T. 

3.3.10.2 Purpose 

To prepare and send to the computer operator, messages instructing him what to do when 
end-of-tape has been encountered on the Old Problem Tape (0PTP) or the New Problem Tape (NPTP). 

3.3.10.3 Calling Sequence 

CALL XE0T(ID,0REEL,NREEL,8UF) 

ID - BCD name NPTP or 0PTP 

0REEL - Number of reel to be dismounted - integer. 
NREEL - Number of new reel to be mounted - integer. 
BUF - GIN0 buffer used by NPTP or 0PTP. 

3.3.10.4 Method 

A check is made to see if tape has multi-reel capability. If not, a fatal message is issued 
and job is terminated. The operator messages are generated and issued and the old reel is re- 
wound and unloaded. A check is made to see if correct new reel has been mounted and then a 
return is made to calling program. 

3.3.10.5 Design Requirements 

XE(3T must be accessible to routines XGPI and XCHK. 

3.3.10.6 Diagnostic Messages 

A message is issued if tape does not have multi-reel capability. 



3.3-14 



EXECUTIVE SUBROUTINE DESCRIPTIONS 

3.3.11 SSWTCH (Sense Switches ). 

3.3.11.1 Entry Point: SSWTCH. 

3.3.11.2 Purpose 

To indicate to the calling routine whether or not a specified sense switch is set. 

3.3.11.3 Calling Sequence 
CALL SSWTCH(SS,F) 

SS - Sense switch number - integer. 1<SS < 31. 

F - Flag indicating status of SS 

F = if SS not on 
F = 1 if SS is on 

3.3.11.4 Method 

Named common block /SYSTEM/ contains the word which contains the sense switch settings. 
Bit 1 of the word corresponds to sense switch 1, bit 2 corresponds to sense switch 2, etc. If 
the bit corresponding to SS is on then F = 1, if not then F = 0. 

Note that sense switches are set by the user via the DIAG card in the Executive Control Deck 
and not through physical sense switches set by the computer operator. 

3.3.11.5 Design Requirements 

SSWTCH resides in the core resident oortion of a link. 



3.3-15 



SUBROUTINE DESCRIPTIONS 

3.3.12 C0NMSG (Console Message Writer) . 

3.3.12.1 Entry Point: C0NMSG 

3.3.12.2 Purpose 

Writes the current time and a NASTRAN system message onto the system output device and 
(if the computer configuration permits) onto the on-line operator's console device. 

3.3.12.3 Calling Sequence 

CALL C0NMSG(MSG,CNT,YN) 

MSG - Array name containing message. 

CNT - Number of 4-character words in message (integer). 

YN - 1 = yes, = no. Print on-line device if yes and available. 

3.3.12.4 Method 

A computer real-time and/or job clock is interrogated. The number of message words 
indicated is sent to the system output device (usually printer) along with the clock reading(s). 
If the computer configuration permits and the yes/no switch is set yes, the same clock reading(s) 
and message is sent to the operator's console device (usually typewriter). 

3.3.12.5 Design Requirements 

Only the left-most four characters from each computer word are extracted and sent to the 
output device(s). 



3.3-16 



EXECUTIVE SUBROUTINE DESCRIPTIONS 

3.3.13 TTLPPG (Title Page Writer) . 

3.3.13.1 Entry Point: TTLPPG. 

3.3.13.2 Purpose 

To print on the system output file 2 title pages identifying the iob as a NASTRAN nrohlem, 
identifying the current NASTRAM source and object libraries and identifying the current Rinid 
Format series . 

3.3.13.3 Calling Sequence 
CALL TTLPPG. 

3.3.13.4 Method 

TTLPPG is called as the first executable statement in the Preface driver SEMINT. 

3.3.13.5 Design Requirements 

Whenever a new version of NASTRAN is installed, a level number of the form N.M must be 
updated in TTLPPG, where N is the source library level number and M is the obiect library version 
number. Whenever N is incremented by 1 , M is reset to zero. Minor changes in the system are 
accomplished by updating the necessary routines, thereby generating new object (relocatable) decks 
for these routines. H is incremented by 1 but the source library and hence N remain unchanged. 
The Rigid Format series is identified by a letter. A Rigid Format series can change only when N 
is changed. 



3.3-17 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4 UTILITY SUBROUTINE DESCRIPTIONS. 
3.4.1 MAPFNS (Machine Word Functions) . 

3.4.1.1 Entry Points: LSHIFT, RSHIFT, ANDF. !2IRF, X0RF, C(3MPLF, C0RSZ, C0RWDS. 

3.4.1.2 Purpose 

To perform basic computer word manipulations by standard binary digit (bit) operations. 
The manipulations are performed over the complete memory word length for the particular hardware. 
Also, to determine the size of open core (C(i)RSZ) and the absolute difference between locations in 
core (C(ilR,JDS). 

3.4.1.3 Calling Sequence 

All machine word functions are executed as FORTRAN integer function subroutines with 
integer arguments. 

3.4.1.4 Method 

The method employed within each function will be described following the separate function 
examples. 

3.4.1.5 Entries 

l< = LSHIFT (I.N) 

The entire bit structure of word I is shifted left N places and the resulting word replaces 
word K. Word I is unchanged. High-order bits shifted out are lost. Zeros are supplied to 
vacated low-order positions. The shift is logical; no special provision is made for the sign 
position. 

K = RSHIFT (I,N) 

The entire bit structure of word I is shifted right N places and the resulting word renlaces 
word K. Word I is unchanged. Low-order bits shifted out are lost. Zeros are supplied to 
vacated high-order positions. The shift is logical; no snecial orovision is made for the sign 
position. 

K = ANDF (I, J) 

A logical product of the bits within word I and word J is formed and stored into word K. 
Words I and J are unchanged. 



3.4-1 



SUBROUTINE DESCRIPTIONS 

K = 0RF (I.J) 

A logical sum of the bits within word I and word J is formed and stored into word K. 
Words I and J are unchanged. 

K = X0RF (I, J) 

The modulo-two sum (exclusive or) of the bits within word I and word J is formed and 
stored into word K. Words I and J are unchanged. 

K = C0MPLF (I) 

The ones complement of the bits within word I is formed and stored into word K. Word I 
is unchanged. 

K = C(JRSZ (I, J) 

The size of open core is computed and stored in location K through this function. Location 
I is normally the address of a labeled common cell defining the beginning of a particular open 
core area. Location J is normally the address of blank common (usually thought to be the end of 
a particular open core area). On computer memory configurations where blank cotmion does not 
define the end of open core, CfJRSZ ignores location J and substitutes a correct end value. The 
arguments I and J may be interchanged without affecting results. 

K = C8IRWDS (I.J) 

The absolute difference plus 1 between the addresses of locations I and J is comouted and 
stored into word K. Words I and J are unchanged. 

3.4.1,6 Design Requirements 

f-IAPFNS is written in assembly language. 



3.4-2 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.2 gPEN (Initiate Activity on a File ). 

3.4.2.1 Entry Point: 0PEN. 

3.4.2.2 Purpose 

To initiate activity on the requested file. 

3.4.2.3 Calling Sequence 

CALL J)PEN($n, NAME, BUFF, 0P) 

n - FORTRAN statement number defining the return to be taken in the event NAME is not 
in the FIST (i.e. the data block is purged). 

NAME - GIN0 file name of the data block which is to be read or written(see section 1.6.4.1), 

BUFF - An array whose dimension equals the contents of the first word of /SYSTFM/ which 
will be used by GIN|3 while the file is ooen. 

!0, open file to read with rewind 
1, open file to write with rewind 
2, open file to read without rewind 
3, open file to write without rewind 

3.4.2.4 Method 

(3PEN stores parameters in /GIN0X/ and then calls XGIN0 which searches the FIST for a name 
match and picks up from the FIAT the unit to which the data block is assigned. The position of 
the buffer is determined relative to /XNSTRN/. 

This index is saved in the BUFADD array in /GINjJX/. BUFADD is searched to determine if any 
other buffer overlaps the buffer currently assigned. GIN0 is called to initiate activity for the 
file. 

3.4.2.5 Design Requirements 

The address of the buffer assigned must be greater than the address of /XNSTRN/. 

3.4.2.6 Diagnostic Messages 

The following system fatal errors may be issued by 0PEN: 
3006 
3012 
3040 



3.4-3 



SUBROUTINE DESCRIPTIONS 

3.4.3 WRITE (Write Data in a Logical Record) . 

3.4.3.1 Entry Point: WRITE. 

3.4.3.2 Purpose 

To write a logical record, or portion of a logical record, on the requested file. 

3.4.3.3 Calling Sequence 

CALL WRITE(NAME,BL0CK,N,E0R) 

NAME - GIN0 file name of the data block which is to be written (see section 1.6.4.1). 
BL0CK- An array of dimension a N containing the data words to be written. 
N - The number of words to be written - integer - input. 

iO, the N words to be written by this call do not end the logical record, i.e. 
subsequent WRITE calls will provide additional data to be written in the 
current logical record. 
1, the N words to be written by this call end the logical record. 

3.4.3.4 Method 

WRITE stores parameters in /GIN0X/ and then calls XGIN0 which in turn calls GIN0 to oerform 
the actual processing of the call. 



3.4-4 



UTILITY SUBROUTINE DESCRIPTIONS 

3-4-4 CL0SE (Terminate Activity on a FileK 

3.4.4.1 Entry Point: CL0SE. 

3.4.4.2 Purpose 

To terminate activity on the requested file. 

3.4.4.3 Calling Sequence 
CALL CL0SE{NAME,0P) 

NAME - GIN0 file name of the data block to be closed (see section 1.6.4.1). 

1, if file was opened to write, write end-of-file and rewind. 
If file was opened to read, rewind only. 

2, close file at current file position (no end-of-file, no rewind). 
0P ( 

3, if file was opened to write, write end-of-file and position file in front of 

end-of-file mark. 

If file was opened to read, same as 0P = 2. 

If the requested file is not in the FIST or is not currently open, a normal return is given 
and no operation takes place. 

If the file was opened for output and the last logical record has not been written, it is 
written prior to honoring the 0P request. 

The buffer assigned when the file was opened is released and is available to the user on 
return. 

3.4.4.4 Method 

CL0SE stores parameters in /GIN0X/ and then calls XGIN0. If XGIN0 returns indicating the 
file is not in the FIST or not open, an immediate return is given to the user. Otherwise XGIN0 
calls GIN0 to process the call. 



3.4-5 



SUBROUTINE DESCRIPTIONS 

3.4.5 READ (Read Data From a Logical Record). 

3.4.5.1 Entry Point: READ. 

3.4.5.2 Purpose 

To read the contents of a logical record, or portion of a looical record, from the requested 
file. 

3.4.5.3 Calling Sequence 

CALL READ($ni,$n2,NAt^E,BL0CK.N,E0R.M) 

ni - F0RTRAN statement number defining the return to be taken in the event an end-of- 

file is encountered by this READ operation, 
nz - FORTRAN statement number defining the return to be taken at the end of the READ 
operation whenever the end-of-logical -record is encountered prior to transmitting 
the requested number of data words. 
NAME - GIN(3 file name of the data block which is to be read (see section 1.6.4,1). 
BLi3CK - An array of dimension s N, where the words read will be stored. 

(N > 0: The number of words to be read and stored at BL5"CK - integer - input. 
N - <N s 0: The number of words to be skipoed, i.e., read but not stored at BL(»CK. 
(integer - input. 

(0, subsequent calls to READ for the current logical record are exoected. 
E0R - <1, the current call is the last call for the current logical record. The file 
(will be positioned to the beginning of the next logical record before returning. 

M - If return to nz is given, the number of words actually read is stored in M. 
In no other case are the contents of M changed. 
Whenever return to nz is given, the file is positioned to the beginning of the next logical 
record regardless of the setting of E0R. 

A return to n, is possible only when a call to READ is given when the file is positioned at 
the beginning of a logical record. 



3.4-6 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.5.4 Method 

READ stores parameters in /GIN13X/ and then calls XGIN0 which in turn calls GIN0 to perform 
the actual processing of the call. 



3.4-7 



SUBROUTINE DESCRIPTIONS 

3.4.6 FUDREC (Forward Space One Logical Record ). 
3.4.5.1 Entry Point: FWDREC. 
3.4.G.2 Purpose 

To position the requested file forward one logical record. 

3.4.6.3 Calling Sequence 
CALL FWDREC ($n, NAME) 

n - FORTRAN statement number defining the return to be taken in the event an end-of-file 

is encountered. 
NAI-1E - GIN(3 file name of data block to be positioned forward(see section 1.6.4.1). 

This call will always position the file to the beginning of the next logical record unless 
an end-of-file is encountered. 

3.4.6.4 Method 

FWDREC stores parameters in /GIN0X/ and then calls XGIN0 which in turn calls GIN0 to process 
the call . 



3.4-8 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.7 BCKREC (Backspace One Logical Record) . 

3.4.7.1 Entry Point: 3CKREC. 

3.4.7.2 Purpose 

To position the requested file backward one logical record. 

3.4.7.3 Calling Sequence 
CALL BCKREC (NAME) 

NAME - GIN0 file name of data block to be positioned backward (see section 1.6.4.1). 

If the file is positioned in the middle of a logical record, the file is repositioned to 
the beginning of that record. Otherwise, the file is positioned to the beginning of the previous 
logical record. 

If the file is positioned at the beginning of file, no operation occurs and a normal return 
is given. 

3.4.7.4 Method 

BCKREC stores parameters in /GIN0X/ and then calls XGIN0 which in turn calls GIN0 to 
process the call . 



3.4-9 



SUBROUTINE DESCRIPTIONS 

3.4,8 REviIND (Position File to the Load Point ). 

3.4.8.1 Entry Point: REWIND 

3.4.8.2 Purpose 

To rewind the requested file. 

3.4.8.3 Calling Sequence 

CALL REWIND(NAME) 

NAi'lE - GINia file name of the data block to be rewound (see section 1.6.4.1). 
Rewind given for an output file has the effect of erasing any data which has been written 
on the file. 

3.4.8.4 Method 

REWIND stores parameters in /GIN0X/ and then calls XGIN0 which in turn calls GINiJ to 
process the call . 



3.4-10 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.9 E0F (Write an £nd-of-Fi1e ) . 

3.4.9.1 Entry Point: E0F. 

3.4.9.2 Purpose 

To write an end-of-file on the requested file. 

3.4.9.3 Calling Sequence 
CALL E0F(NAME) 

NAME - GIN0 file name of data block on which end-of-file is to be written(see section 1.6.4.1.) 
The file must be open to write at the time of this caTl . 

3.4.9.4 Method 

E0F stores parameters in /GIN0X/ and then calls XGIN0 which in turn calls GIN0 to process 
the call. 



3.4-n 



SUBROUTINE DESCRIPTIONS 

3.4.10 SKPFIL (Skip Files Forward or Backward ). 

3.4.10.1 Entry Point: SKPFIL. 

3.4.10.2 Purpose 

To position the requested file forward or backward a stated number of files. 

3.4.10.3 Calling Sequence 
CALL SKPFIL(NAME,N) 

NAME - GIN0 file name of the data block to be reoositioned (see section 1.6.4.1). 
N - The number of files to be skipped. N ^ means forward skin, M ^ means 
backward skip, N = means no ooeration - inteaer - inout. 

Notes: 

1. Following a forward skip, the file is positioned at the beqinning of the first 
logical record (i.e. immediately after the end-of-file mark). 

2. Following a backward skip, the file is positioned immediately in front of the 
end-of-file mark (or at the beginning-of-unit) . 

3. Request to skip backward from the beginning-of-unit is ignored and the file 
remains positioned at the beginning-of-unit. 

4. SKPFIL backward on a file opened to write has the effect of "erasing" file(s) 
written. 

3.4.10.4 Method 

SKPFIL stores parameters in /GI^X/ and calls XGIN0 which in turn calls PIN0 to nrocess the 
call. 



3.4-12 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.11 XGINia (GINg Utility Routine ). 

3.4.11.1 Entry Point: XGIN0. 

3.4.11.2 Purpose 

To convert the GIiN0 file name to a unit number, retrieve the buffer assigned to the file 
and call GIN0. 

3.4.11.3 Calling Sequence 
CALL XGIN0($ni,$n2.A.M) 

C0MM0N/GIN0X/LGIN!2IX,FILEX,E0R,0P, ENTRY, LSTNAM.N, NAME, NTAPE,XYZ(2),UNITAB(75),BUFADD(75) 

1, call from subroutine 0PEN 

2, call from subroutine 'v'RITE 

3, call from subroutine READ 
14, call from subroutine CL0SE 

EliTRY =<5, call from subroutine BCKREC ) integer - innut 

6, call from subroutine FUDREC 

7, call from subroutine SKPFIL 

8, call from subroutine E0F 
1 9, call from subroutine REWIND 

NAME - GIN0 file name of data block for which activity is requested - integer - input. 

FILEX - Unit number to which NAME is assigned - integer - output. 

LSTNAM - On entry to XGIN0, GIN0 name from previous call. On exit from XGIN0, 
LSTNAM = NAME - integer - input and outout. 

(O, file does not reside on tane ] 
NTAPE = < ■ > integer - outnut. 

(.1, file resides on tape j 

'if ENTRY = 1 or 4, F0RTRAN statement number defininn return in the event 
(name is not in FIST. 

|if ENTRY = 3 or 5, F0RTRAN statement number defining return in the event an 
^end-of-file is encountered. 

ri2 - If ENTRY = 3, F0RTRAN statement number defining end-of-logical -record prior to 

completion of requested read. 

3.4-13 



SUBROUTINE DESCRIPTIONS 

A - If ENTRY = 2 or 3, A is the user block (from/to) which data words are written/read. 
M - If ENTRY = 3 and return to n^ is given, M = number of words read - integer - output. 

3.4.11.4 Method 

The FIST is searched for a name match. If found, the pointer to FIAT is used to nick un the 

unit number and tape flag. If not found, a non-standard return is given (ENTRY = 1 or 4) or a 

fatal message is generated. The address of the buffer assigned to the file is picked uo and GIW 
is called to execute the requested operation. 

3.4.11.5 Design Requirements 

XGIU0 is designed as an integral part of the GIN0 collection of routines for use only by 
0PEN, READ, ^RITE, etc. 

The BUFADD table must be initialized to zero prior to the first call in a NASTRAN execution. 

3.4.11.6 Diagnostic Messages 

The following system fatal errors may be issued by XGIN0: 
3010 
3021 



3.4-14 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.12 GINg) (General Input/Output Routine ). 

3.4.12.1 Entry Point: GIN0. 

3.4.12.2 Purpose 

To provide general purpose Input/Output services to higher level routines (READ, WRITE, etc.) 
in the NASTRAN program. 

3.4.12.3 Calling Sequence 
CALL GIN(3($n^,$n2,BUFF,A,M) 

C!3MM0N/GIN!3X/LGIN0X,FILEX,E!3R.0P, ENTRY, LSTNAM,N, NAME, NTAPE,XYZ(2),UNITAB(75),BUFADD(75) 

1 , 0PEN Operation 

2, WRITE Operation 

3, READ Operation 

4, CL(?SE Operation 
ENTRY = ( 5, BCKREC Operation / Input, integer 

's, FWDREC Operation 

7, SKPFIL Operation 

8, E0F Operation 

9, REWIND Operation 

FILEX - Unit number of file - integer - input. 

E0R - End-of-record flag (see READ, WRITE) - integer - input. 
0P - Operation code (see 0PEN, CL0SE) - integer - input. 

N - Number of words to write/read or number of files to skip (see WRITE, READ, 
SKPFIL) - integer - input. 

BUFF - Address of buffer assigned to FILEX. 

ni - F0RTRAN statement number defining return in the event an end-of-file is encoun- 
tered (READ and FWDREC operations only). 

n2 - F0RTRAN statement number defining return in the event an end-of-record is encoun- 
tered prior to transmitting the requested number of words (READ operations only). 

A - User block (see WRITE, READ). 

M - Number of words actually read if end-of-record encountered and return to n2 is 

given (see READ) - integer - outout. 

3,4-15 



SUBROUTINE DESCRIPTIONS 

3.4.12.4 Method 

GIN0 blocks all logical records into fixed length physical records (blocks) for writing 
and reading. A description of the GIN0 buffer follows: 



Buffer Control Word (BCW) = 'READ' or 'WRIT' 



Current Buffer Pointer (CBP) 



Current Logical Record Pointer (CLR) 



Current Block Number (NBL0CK) 



Number of data words in logical record or record segment 



Data Words 



o 

in 



Control Word 



Loaical 
record 



Logical record 

and 
control words 



Number of data words in logical record or record segment 



Data Words 



Control Word 



Pointer to last logical record (LLR) 



Control word = 4*K + 2*F2 + Fl where 

Fl = 1 indicates continued record 

F2 = indicates last segment of continued record 

if Fl =0, K = number of words in logical record 

if F2 = 1, K = 6553fi*(Block No.) + CLR of 1st segment of logical record 

Processing of each operation takes place as follows: 

1. 0PEN. If a rewind is requested, the file is rewound and the first three words of the 
buffer are initialized followed by a return. Otherwise, the current file position is retrieved 
from UNITAB. If the file is logically between blocks, action occurs as above. Otherwise, the 
next block is read and the pointer to the current logical record is restored. If the block read 
is not the expected block, a recovery attempt is made. 



3.4-16 



UTILITY SUBROUTINE DESCRIPTIONS 

2. WRITE. For the first call to write in a logical record, Nf5L0CK and CLR are saved in 
UNITA3. User data is transferred to the buffer. If the buffer is filled, a control word indicat- 
ing continuation is placed, the block is written and the logical record is continued in the next 
block. After data transfer to the buffer, E(3R is tested. If on, a control word is nlaced in 

the buffer and pointers are moved to the beginning of a new logical record. 

3. READ. If the buffer is empty, the next block on the file is read. If nositioned at the 
beginning of a logical record, a test for logical end-of-file is made. If on, return to ni is 
given. Otherwise data is transferred from the buffer to the user area. If the looical end-of- 
record is encountered before the requested number of words have been transmitted, M is set with 
the number of words read, and return to n2 is given. If the logical record is continued to the 
next block, the next block is read. After the transfer of data is complete, ElZIR is tested. If 
on, pointers are moved to the beginning of the next logical record. 

4. CL0SE. If the file was opened to read, !3P is tested. If (3P = 1 , the file is rewound. 
If 0P ?* 1, the file is backspaced one block unless the file is logically between blocks. In 
either case, the logical position of the file (NBL0CK and CLR) is saved in UMITAB, BCW is set to 
zero and return is made. If the file was opened to write and CRP f CLR, control words for the 
last logical record are stored in the buffer. If 0P = 1 or 3, a logical end-of-file is placed. 
The current block is written on the file. If 0P = 1, the file is rewound, othervnse the file is 
backspaced one block. The logical position of the file is saved in UiUTAB, BCW is set to zero 
and return is made. 

5. BCKREC. If the buffer in core is empty, the file is backspaced one block, the block is 
read and LLR is used to set the pointers to the last logical record in the block. If the file is 
logically positioned in the middle of a logical record, pointers are reset to the beginning of a 
logical record. If the file is positioned at the beginning of a logical record, pointers are 
reset to the beginning of the previous logical record. 

6. FWDREC. M is set to zero and E0R to 1 and the code in the READ portion of GIN0 is used 
to position the file at the beginning of the next logical record. 



3.4-17 



SUBROUTINE DESCRIPTIONS 

7. SKPFIL. If a forward skip is requested, logical records are skipped until a looical 
end-of-file is encountered. This is repeated until the number of requested files has been 
skipped. 

If a backward skip is requested, the code in the BCKREC portion of GIN0 is used to position 
backwards one logical record. A test for load point is made. If yes, return is made. Otherwise, 
a logical end-of-file test is made. If no, the BCKREC is repeated. If yes, a test for number 
of requested files is made. If yes, return is given. Otherwise, the process is repeated. 

8. Ei3F. If the file was not opened to write, an error message is generated. If CBP f CLR, 
control words are placed to "close" the last logical record. A logical end-of-file is placed in 
the buffer. Return is made. 

9. REWIND. The file is rewound, pointers are reset and return is given. 
3.4.12.5 Design Requirements 

T. GIN0 is designed as an integral part of the GIN0 collection of routines and is to be 
called only by XGIM0. 

2. Since GIW "remembers" the position of files when they are closed, any activity on a 
file outside of GIN(3 will likely be fatal. 

3. Because of the packing used in the control word, the following maximums apply: 

Max. number of blocks written on one file = 2-1 where k = number of bits ^r\ 
the computer word - 18. 
Max. buffer size = 55535 words. 
3.4.12.6 Diagnostic Messages 

The following system fatal messages may be issued by 6IN0: 
3009 
3029 
3048 
3049 



3.4-18 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.12.7 Information Message 

GIN0 RECOVERY ATTEMPT 0N DATA BL0CK . EXPECTED BL0CK Nj3. = . ACTUAL BL0CK 

N0. = . 

This message is issued prior to Message 3049. GIN0 attempts to reposition the file. 
If the attempt fails, Message 3049 is issued, otherwise the problem proceeds. 



3.4-19 



SUBROUTINE DESCRIPTIONS 

3.4.13 i3PNC0R (Transmit Logical Records To/From Core Storage ) . 

3.4.13.1 Entry Points: 0PNCJ3R, WRTC0R, RDC0R. 

3.4.13.2 Purpose 

To simulate the GIN0 WRITE and READ calls providing the capability to write logical records 
of data in core storage and read logical records from core storage. 

3.4.13.3 Calling Sequence 

CALL 5IPNC!ilR(BL0CK) 

BL0CK - An array whose dimension is sufficient to hold a logical record to be written 
or read. 

CALL JRTC!2R(BL0CK,A,N.E0R) 

BL0CK - The array where the logical record is to be written. 

A - An array containing the data vMords to be written. 

M - The number of data words to be written from A. 

C= 0, additional data will be written in the logical rpcord via subseouent 
^gj^ _ \ calls to mJCm- 

(f 0, the current call is that last call for the current logical record. 
CALL RDCi2IR($ni ,$n2 .BL(3CK,A,N,E0R.M) 

nj - F0RTRAN statement number defining the return taken in the event an end-of-file 
is encountered. This return is not possible from RDC0R but is provided in the 
calling sequence for compatibility with READ. 

n2 - FORTRAN statement number defining the return taken in the event that the 

number of words requested to be read is not available in the record. In this 
case, M words are read and transmitted and the value M is returned to the user. 

BL0CK - The array where the logical record is stored. 

A - An array where the requested data words from the record will be stored. 

N - The number of data words to be read. 



3.4-20 



UTILITY SUBROUTIME DESCRIPTIONS 

(= 0, more data is to be read from the record via subsequent calls to RDC0R. 
E0R - { 

{^ 0, the current call is the last call for the current logical record. Any 
remaining words in the logical record are to be skipped. 

M - The number of words actually read in the event return to <r\2 is taken. 

The number of words available at BL0CK must be equal to (or greater than) the number of 
words in the logical record plus two . 

iilPNCiJR initializes a word pointer stored at BL0CK(1) to 1 and has no other function. The 
user may desire to perform this function himself with the statement BL0CK(1) = 1. This function 
must be accomplished prior to the first call to WRTC(3R or RDC0R for each logical record. 

3.4.13.4 Method 

0PNC!3R. BL5ICK(1) is set to one and return is made. 

WRTC0R. The current pointer stored at BL0CK(1) is picked un. N words are transmitted from 
A to BL0CK beginning at the current pointer plus one. If E0R = 0, the new Dointer is stored and 
return made. Otherwise, an end-of-record flag is stored in BL0CK following the last word 
written. The pointer (pointing to the flag) is stored and return made. 

RDC0R. The current pointer is picked up from BL0CK(1). Words are transmitted from BL0CK 
beginning at the current pointer plus one to A until (1) the end-of-record flag is encountered 
in which case the actual number of words transmitted is stored in M and RETURN 2 is given, or (2) 
N words have been transmitted. If E0R = 0, the new pointer is stored and return is made. If 
E0R / 0, BL0CK is searched until the flag is found, the pointer (pointing immediately prior 
to the flag) is saved and return is made. 

3.4.13.5 Design Requirements 

The flag value must be unique. Its value = (-16777215) must not be one of the data words 
written. 



3.4-21 



SUBROUTINE DESCRIPTIONS 

3.4.14 G0 PEN (Short Form for Subroutine 0PEN With Header Record Processing) . 

3.4.14.1 Entry Point: G0PEN. 

3.4.14.2 Purpose 

To provide a short form (without the non-standard return of subroutine (JPEN) for opening a 
GIN0 file, and to write a two-word header record if the data block is opened as output with 
rewind or to skip the header record if the data block is opened as input with rewind. 

3.4.14.3 Calling Sequence 

CALL G0PEN(FILE. BUFFER. 0PT) 

where: 

FILE = GIN0 file name (see section 1.6.4,1). 

BUFFER = GIN0 buffer location. 

OPT = any of the open options permitted by subroutine 0PEN (see section 3.4.2). 

3.4.14.4 Method 

Open the file (subroutine 0PEN). If 0PT = input with rewind (0), skip the first record of 
the data block. If 0PT = output with rewind (1), write the two v/ord BCD name of the data block 
as returned by subroutine FNAME. 

3.4.14.5 Design Requirements 

The data block must exist (must not be purged). If 0PT = innut with rewind (0), the first 
record of the data block must be at least two words long. Subroutines used: 0PEN, READ, WRITE, 
FNAME, MESAGE. 

3.4.14.6 Diagnostic Messages 

If the data block is purged or if an end-of-file or end-of-record condition is encountered 
when reading the data block, subroutine MESAGE will be called with internal messaoe numbers 1, 2, 
or 3, respectively (external message numbers are 3001, 3002 and 3003). 



3.4-22 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.15 FREAD (Short Form for Subroutine READ ). 

3.4.15.1 Entry Point: FREAD. 

3.4.15.2 Purpose 

To provide a short form (without the non-standard returns of subroutine READ) of reading a 
GIN0 file. 

3.4.15.3 Calling Sequence 

CALL FREAD(FILE.BL0CK,N,E0R) 

where: 

FILE = 6IN0 file name (see section 1.6.4.1). 

BL0CK= array into which N items are to be read. 

N = number of items to be read. 

E0R = any end of record option permitted by subroutine READ (see section 3.4.5). 

3.4.15.4 Method 

Read the N items from FILE into BL0CK. If subroutine READ returns an end-of-file or 
end-of-record condition, subroutine MESAGE is called with a fatal error condition. 

3.4.15.5 Design Requirements 

In addition to those imposed by READ, there must be N items remaining in the record to be 
read. Subroutines used: READ, MESAGE. 

3.4.15.6 Diagnostic Messages 

Subroutine MESAGE may be called with internal message number 2 or 3 (external messaqe 
numbers 3002,3003). 



3.4-23 



SUBROUTir^E DESCRIPTIONS 

3. 4. lb WRTTRL (Write Trailer) . 
3.4.1D.1 Entry Points: WRTTRL, RDTRL. 

3.4.16.2 Purpose 

WRTTRL will pack six v;ords of trailer information into three words and store them in the FIAT. 
RDTRL will retrieve and unpack the trailer information. 

3. 4. 15. 3 Calling Sequence 
CALL '.JRTTRL(FIL3LK) 

FILBLK(l) - GIN0 file name (see section 1.6.4.1). 
FILBLK(2-7) - Trailer information to be stored. 
CALL RDTRL(FILBLK) 

FILBLK(l) - GIN0 file name. 

FILBLK(2-7) - Storage space for trailer information. 

3.4.16.4 Method 

The index into the FIAT for the specified file is located in the FIST. The three packed 
words are stored in or retrieved from the FIAT. The information is also stored for all files 
equivalenced to the GIN0 file name. For RDTRL, if the file is purged, FILBLK(l) is set 
negative. 

3.4.16.5 Design Requirements 

Each word of trailer information is assumed to be a positive integer less than 2-1. 

3.4.16.6 Diagnostic Messages 

If the file did not exist in the FIST when WRTTRL was called, fatal error 3011 occurs. 



3.4-24 



UTILITY SUBROUTIi^E DESCRIPTIONS 

3.4.17 FiJAME (File Name) . 

3.4.17.1 Entry Point: FNAME. 

3.4.17.2 Purpose 

Given a GIN0 file ncime, FNAME returns the two BCD words which describe the data block. 

3.4.17.3 Calling Sequence 

CALL FNAHE(FILE,NAME) 

FILE - GIN0 file name (see section 1.6.4.1). 
NAME(2) - Storage for the two BCD words. 

3.4.17.4 Method 

The GIN0 file name is first located in the FIST. The index in the FIST is used to find 
the BCD descriptors in the FIAT. If the file does not exist in the FIST, "^(N0NE)^" is returned 
as the two words, ^ indicating a BCD blank. 



3.4-25 



SUBROUTINE DESCRIPTIONS 

3.4.18 CLSTAB (Close a GINg File and Write a Non-zero Trailer ). 

3.4.18.1 Entry Point: CLSTAB. 

3.4.18.2 Purpose 

To close a GIN0 file and generate a table trailer by callinn WRTTRL. 

3.4.18.3 Calling Sequence 

CALL CLSTAB{FILE,(3PT) 

where: 

FILE = GINI3 file number - Integer - input. 

0PT = any close option permitted by subroutine CL0SE (see section 3.4.4) - integer - Input, 

3.4.18.4 Method 

CALL CL0SE(FILE,0PT) 

Generate the table control block, ITABCB: 

ITABCB(l) = FILE 

ITABCB (7) = 1 

D0 10 I = 2,6 

10 ITABCB(I) = 

CALL V/RTTRL (ITABCB). 

3.4.18.5 Design Requirements 

Same as those for subroutines CL0SE and WRTTRL. Subroutines used: CL0SE, IJRTTRL. 



3,4-26 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.19 XRCARD (Executive Free-Field Card Data Conversion Routine ) 

3.4.19.1 Entry Point: XRCARD, 

3.4.19.2 Purpose 

To interpret NASTRAN free-field card input data as follows: 

1. Identify BCD alpha and numeric data fields as they are converted and placed in 
the user's buffer; 

2. Flag and output special data field delimiters; 

3. Convert BCD numeric fields to binary integer or binary floating point; 

4. Indicate when the data extends beyond one 72 column card. 

3.4.19.3 Calling Sequence 

CALL XRCARD(0UTBUF,L,INBUF) 

Where: 

0UTBUF = The buffer which is to contain the converted card image. 

L = The length of 0UTBUF available to XRCARD. 

INBUF - The buffer containing the card image to be converted. 

3.4.19.4 Method 

XRCARD's design is based on the necessity of having to function on a variety of computing 
machines having a variety of computer word structures, and a variety of differences in hollerith 
handling imposed by differing F0RTRAN compilers. 

XRCARD analyzes the twenty hollerith words input through INBUF as follows: 
Data Field Delimiters 
Type A: 

The following symbols signify the end of an alpha field or numeric field on the card. As 

these symbols are encountered, they will be flagged and placed in the output buffer to aid the 

user in identifying the data. 

( LEFT PAREN 

/ SLASH 

= EQUAL 

3.4-27 



SUBROUTIME DESCRIPTIONS 

Type B: 

The following symbol is identical to those listed above except that the symbol is not flagged 
or placed in the output buff?': 

, COMMA 

Jhen successive type A or type 3 delimiters are encountered, a null field indication (two BCD 
blank words) is output. A null field is generated for each successive delimiter. A null field 
is also generated when a type A or type B delimiter is followed by a $ indicatinn the end of data 
condition. 

Type C: 

The following symbols are identical to the COMMA excent that no null ^ield indication is 
output when they are encountered in succession. 

) RIGHT PAREN 
^ BLANK 

End of Data Indication 

There are two means by which end-of-data may be specified on the card: 

- The last data field ends in column 72, or is followed by blanks out through 
column 72; or a 

- $ is encountered, after which comments may be included out to column 80. 
Format of Output Data 

A mode word, M, is placed in the outout buffer to distinguish betv/een ^CD data and 
numeric data. 

iiumeric Mode Word : A new mode word is outout each time a numeric field is converted 
and output. (All numeric mode words are negative). 

N = -1 integer data (1 data word) 

= -2 floating point single precision (1 data v/ord) 
= -4 floating point double precision (2 data words) 

N indicates the type of numeric data and where to look for the next mode word. 



3.4-28 



UTILITY SUBROUTINE DESCRIPTIONS 

Aloha Mode Word : iJhen processing alpha data, only one mode word is outnut for successive 
alpha fields, i.e., an alpha mode word will never follow another aloha mode word. 

N = The number of successive alnha fields encountered on the card. Fach alnha ^ield 
consists of two 4-character computer words (le-^t adiusted). Thus N can be used 
to compute the location of the next mode word. 

The type A delimiters are output as aloha data and are 'covered' by the aloha mode word. 
Since data output in the alpha mode must consistsof two words a type A delimiter will appear as: 

;Jord 1 = Delimiter flag, all bits of the word are on. 

Word 2 = BCD delimiter, left adjusted, followed by BCD blanks. 

End-of-Data : The end-of-data flag is placed last in the output buffer and appears in place 
of an expected mode word. There are two end-of-data flags: 

- A word with all bits off, indicating that more data is to follow on a continuation card. 

- A word with all bits on except for the sign, indicating that no more data is to follow 
for this card type. 

Sample Input Card 

OhRDh H=l>E=1.0.AEi:'-CriErGH GOOD DATft 



00000000000 0000 000 ODOOOOOOOOOOOO 0000000000000000000000000000000000000000000 

1 ! 3 4 5 t 7 B 110111! IJMIS in; IB l!!Q!l!!!JZUSIS!)!l!930iUn]lllS!()ni39i«ili;431<4S<S<?<l«954SIS!S]HiSSSS;SISlS(15U!(3«lliSMIIUHJ0?II!;i;t7W577;i7>IO 

1 11 in 1 111 in 1) iiniimnn i iiinm in 1 1 in n ii 1 1 1 nn nnnninnn 

222222222222 222222 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
■33333333 3 3 3 3 33 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 
Hi H44444444444444444 44444444 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 
5555555 5555 555S555555555 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
6(i666GC 666666666060666666 6 66 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 fi fi 6 6 6 6 6 6 6 6 6 6 6 B B 6 6 6 6 6 6 6 

nmmnmmmmmi n innmimimmmnnmmmmmmmm 
?388:aao8 ease oooobbbbs BOSBBsaooBBBeBBsoBaaaaoBBBsasBBSssaoBBaaaoaoooooBooe 

39 99999999999999999999993999999999999999999999939999999999993999939999990939999 

I ! 3 4 S ■ 7 ■ J Kill! 13 14 IS 11 17 IB 1! 20 !1 !!2324IS7i!7a(i 3C 3132)3 14 3S3U;313!4B41<7 )i 44 454847 4B4) SI 5153 ;3545SSIS: SI S3t561S2t3ii(S6B17eBl! 70 71 7! 7174 75 757171 7!8j 



3.4-29 



SUBROUTINE DESCRIPTIONS 



Resulting Output Buffer for IBM 7094 or Univac 1108 



BCD Field 



BCD Field 



Output Del imiter 



Output Delimiter 



NOTE : For the IBM S/360 the 
output buffer shown here looks 
the same except that the right 
two blanks shown in the BCD 
fields here do not exist. For 
the CDC 6600 there are an 
additional four trailing blanks 
in each word of a BCD field than 
shown here. 



+ 


(alpha mode word) 


3 


c 


A R /~. 


/'\ 


A 


■^ -^ ^ /^ 


/\ 


A 


/^ /^ y^ /\ 


/^ 


/\ 


^^ /\ /\ /\ 


/\ 


all bits on 


-- 


yX -^ /X /\ 


/\ 


-( 


numeric mode word) 1 


integer 1 


+ 


(alpha mode word) 


2 


B 


/\ /^ /^ /^ 


/\ 


/^ 


/^ /^ /\ ^ 


/\ 


all bits on 


= 


/\ /^ /\ /\ 


/x 


-( 


numeric mode word) 2 


SI 


ngle-precision 1 





+ 


(alpha mode word) 


5 


A 


B C ^ ^ 


/^ 


/^ 


z^-. /\ y-K ^ 


y\ 


all bits on 


/ 


/\ y\ ^\ /\ 


/\ 


C 


D E F '^ 


^ 


G 


H /^ ^ /N 


/\ 


G 


D /x 


y\ 


/x 


/\ /^ /\ /^ 


y\ 


D 


A T A /^ 


y\ 


/\ 


/\ y\ /^ /'\ 


^\ 


all 


bits on sign bit 


Off 









Number of successive alpha fields 
(including Type A delimiters) 



End of data for this card 



'^ Indicates blank. 



3.4-30 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.19.5 Design Reqir'rements 

An alpha field must be eight characters or less. Long alpha fields will be truncated to 
eiglit characters. 

All data must be placed in card columns 1-72. 

A data field may not be split between two cards. 

The specification of all numeric data fields must conform to F0RTRAN IV standards. 

If an error condition is encountered, e.g., data bad, XRCARD will write a message, turn on 
the N0G0 flag in /SYSTEM/, sat the first word of 0UTBUF = 0, and make a normal return to the 
calling program. 



3.4-31 



SUBROUTINE DESCRIPTIONS 

3,4.20 RCARD (Fixed Field Card Data Conversion Routine) . 

3.4.20.1 Entry Point: RCARD. 

3.4.20.2 Purpose 

To interpret NASTRAN fixed-field (bulk data) card input as follows: 

- Identify BCD alpha and numeric data fields as they are converted and placed 
in the users buffer; and 

- Convert BCD numeric fields to binary integer or binary floating point. 

3.4.20.3 Calling Sequence 

CALL RCARD(0UTBUF , FRMTBF .NFLAG , INBUF) 

Where: 

0UTBUF = The buffer which is to contain the converted card image. 

FRMTBF = A buffer which contains identification flags for the converted data in 0UTBUF. 

NFLAG = Contains number of words returned in 0UTBUF. 

INBUF = The buffer containing the card image to be converted. 

Definition of Data Identification Flags Placed in FRMTBF 

= output for a blank data field. 

1 = output for an integer field. 

2 = output for a floating ooint field. 

3 = output for a BCD field. 

4 = output for a double precision floating point field. 
-1 = error. 

3.4.20.4 Method 

RCARD's design is based on the necessity of having to function on a variety of computing 
machines having a variety of computer word structures, and a variety of differences in Hollerith 
handling imposed by differing F0RTRAN compilers. 

Twenty 4-Hollerith words are received by RCARD on any particular call to RCARD. RCARD first 
determines from field 1 (words 1 and 2) if the data card is a continuation card, and whether the 



3,4-32 



UTILITY SUBROUTINE DESCRIPTIONS 

fields are single (2 words each) or double (4 words each) in length. Fields 2 through 9 (for 
single field cards) or 2 through 5 (for double field cards) are then considered one at a time. 
No consideration is made for the last field of any card (words 19 and 20). 

3.4.20.5 Design Requirements 

1. All BCD fields must begin with an alphabetic character. 

2. All BCD fields are defined to be eight characters in lennth. Names with less than einht 
characters will be filled with BCD blanks. 

3. When placed in the user output buffer, each BCD field will be divided into two four- 
character words (left adjusted) and stored in two successive locations of the output buffer. 
The remainder of the words is filled with BCD blanks. 

4. Special characters are not to be used as part of a BCD field except for * and + in field 
1 (column 1) which indicate a double field or single field (respectively) continuation card. 

5. The data fields will be stored successively in the users output buffer as they are 
encountered in scanning the card image from left to right. The number of output core loca- 
tions required per field type varies: 

a. Integer field = 1 core word (right adjusted). 

b. BCD field = 2 core words. 

c. Real single precision = 1 core word. 

d. Real double precision = 2 core words. 

6. The card type field (field 1 ) of a continuation card will not be oassed alonn to the user. 
Two zero words will replace the ID field in the output buffer. Thus the user can easily dis- 
tinguish the difference between a continuation card and a new card type. 

7. A check for bulk data card types SEQGP and SEQEP is made by RCARD. Fields 3, 5, 7, and 9 of 
these card types are processed by a special conversion. 

The input within these special fields will be similar to the Dewey decimal notation and 
consists of a multiple digit integer and up to three single digit sub-integers; e.g., (354.1.2) 
and (267.5). The special fields will be converted to a single integer by dropping any decimal 
points and appending a number of zeros equal to three minus the number of decimal points in 
the original number; e.g., (354120) and (267500). 



3.4-33 



SUBROUTINE DESCRIPTIONS 

8. PXARD does not know the length of the users output buffer, therefore, no check is made 
for exceeding the length of the buffer. However, the number of data words placed in the 
output buffer will be specified in NFLAG. 

9, Field 10 will not be passed along to the user. 

3.4.20.6 Diagnostic Messages 

Fields appearing to be incorrect to RCARO will cause a diagnostic to be written on the 
system output file followed by a card format heading, a card image echo, and an underlining of 
the field in question. Also, the /SYSTEM/ N0G0 flap is set .TRUE., a zero is placed in the outnut 
buffer for the field, and a -1 is placed in the format buffer for the field. RCARD will print 
diagnostics for all fields appearing incorrect and make a normal return. 



3.4-34 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.21 TAPBIT (Tape Bit Test) . 

3.4.21.1 Entry Point: TAPBIT. 

3.4.21.2 Purpose 

To examine the tape bit for a permanent GIN0 file to determine the existence of a physical 
tape for that file. 

3.4.21.3 Calling Sequence 

IF (TAPBIT(FILE)) G0 T(J ... 

FILE is the GIN0 file name (one of 'P(30L', '0PTP, 'NPTP', 'UMF ', 'NUMF', 'PLTT, 
'PLT2', 'INPT'). 

3.4.21.4 Method 

The permanent FIST is searched and the tape bit in the corresponding FIAT entry is 
examined. If the bit is on (indicating the presence of a physical tape), TAPBIT will be set 
.TRUE.. Otherwise it will be set .FALSE.. 

3.4.21.5 Design Requirements 

The type of TAPBIT must be declared LOGICAL. 
3.4.21.5 Diagnostic Messages 

A fatal call to MESAGE occurs if a GIN0 file name other than those listed is used. 



3.4-35 



SUBROUTINE DESCRIPTIONS 

3.4.22 PEXIT (Problem Exit) . 

3.4.22.1 Entry Point: PEXIT. 

3.4.22.2 Purpose 

To terminate the program. 

3.4.22.3 Calling Sequence 
CALL PEXIT. 

3.4.22.4 Method 

The diagnostic message queue is checked and if not empty the message writer MSGWRT is 
called. If the checkpoint flag is set a card is punched indicating the end of the restart 
checkpoint dictionary. The system output buffers are flushed and then the iob is terminated. 

3.4.22.5 Design Requirements 

PEXIT must have access to the F0RTRAM 1/0 routines. 



3.4-36 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.23 TWT0GIZI (Tlme-To-Go) . 

3.4.23.1 Entry Point: TMT0G0. 

3.4.23.2 Purpose 

Computes the running time remaining for this NASTRAN problem. 

3.4.23.3 Calling Sequence 
CALL TMT0G0 (TIME) 

TIME = Remaining time in integer seconds. 

3.4.23.4 Method 

During NASTRAN problem initialization, one system cell is set to the problem starting time 
(PSTART) while another is set to the maximum running time (IIXTIME) contained on the Executive 
Control Deck TIME card. TIME-T0-G0 is then found by reading the clock (N0W) and solving the 
following: 

TIME-T0-G0 = MXTIME - (N0W - PSTART). 

The CPU clock Is utilized on all machines except the IBM 7094 where none is available. 



3.4-37 



SUBROUTINE DESCRIPTIONS 

3.4.24 PAGE (Page Heading) . 

3.4.24.1 Entry Points: PAGE, PAGET, PA6E2 

3.4.24.2 Purpose 

To provide a standard page heading for NASTRAN output. 

3.4.24.3 Calling Sequence 

CALL PAGE 
CALL PAGE! 
CALL PAGE2(N) 

C{JWN/SYSTEM/XXX,(JTPE,SPACE(6),IPAGE,LinE,ITLINE,MAXLIN,DATE(3) 

0TPE - System outout unit - integer. 

IPAGE - Current page number - increased by Ion each call to PAGE. 

LINE - Number of data lines on previous page - LINE is set to zero by PAGE. 

ITLINE - Total number of lines of printout in run - ITLINE = ITLINE + LINE. 

MAXLIN - Maximum number of data lines allowed - if ITLINE > MAXLIN, PEXIT will be called, 

DATE(3)- Today's date: month, day, year - integer. 

N - Number of lines to be written - integer - input. 

C(JMM0N/«)UTPUT/TITLE(32) ,SUBTIT(32) ,LABEL(32) ,HEAD1 (32) ,HEAD2(32) ,HEAD3(32) 

3.4.24.4 Method 

PAGE writes a standard 6 line heading from TITLE. SU3TIT, LABEL, HEADl , HEAD2. HEAD3. 

PAGEl writes only the first 3 lines of a standard header. 

PAGE2 restores the page if N lines will not fit on the current page. 

3.4.24.5 Design Requirements 

ITLINE must be less than MAXLIN. PAGE must have access to the FORTRAN 1/0 routines. 



3.4-38 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.25 MESAGE (Message ). 

3.4.25.1 Entry Point: MESAGE. 

3.4.25.2 Purpose 

To queue nonfatal messages during the execution of a module; and for fatal messages give 
e core dump (CALL PDUMP), print the message queue (CALL MSGURT). and call PEXIT. 

3.4.25.3 Calling Sequence 
CALL MESAGE(N0,PARM,NAME) 

Where 

Hl/i = Internal message number. N0 positive defines the niessage as nonfatal; 

N0 negative defines the message as fatal. 

PARM = Parameter used in the printed message (usually the GIN0 file number) 

NAME(2) = Two words used in the printed message (usually two BCD words containing the 
name of the subroutine calling MESAGE). 

3.4.25.4 Method 

Non-fatal messages are queued in common block /MS6X/ until the maximum number is reached. 
All non-fatal messages after this are lost. When a fatal message is encountered, it is queued 
and appropriate action taken to terminate the run. 

3.4.25.5 Design Requirements 

The size of common block /MSGX/ limits the number of messages stored. 



3.4-39 (12-1-69) 



SUBROUTINE DESCRIPTIONS 

3.4.2G MSGWRT (Messat^e Writer) . 

3.4.26.1 Entry Point: MSGWRT. 

3.4.26.2 Purpose 

To print NASTRAN error messages on the system output file. 

3.4.26.3 Calling Sequence 
CALL MSGWRT 
C!3MM0N/MSGX/N,M,MSG(4JO) 

where; 

N - is the total number of messages to be printed. 

M - maximum number of messages that can be queued by subroutine MESAGE in the array MSG. 

MSG - array where message parameters are queued. 

MSGd.I) - the internal message number of the I message. 

MSG(2.I) - if iMSGd.Dl f 30. MSG(2.I) is a GIN0 file number. 

If |MSG(1,I)I = 30, then MSG{2,I) is an internal message number and 
USRMSG is called. 

MSG(3,I), MSG{4,I) = parameters for the I ' message. 

3.4.26.4 Method 

The internal message number, M(1,I), if not equal to 30 in absolute value, is used by MSGWRT to 
print out the error message along with external message number, which is 3000 plus the internal 
message number. If the internal message number, M{1,I), is 30, subroutine USRMSG is called. 

3.4.25.5 Design Requirements 

External message numbers output by MSGWRT at present are 3001 through 3057. 
MSGWRT is called only by MESAGE. 



3.4-40 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.27 USRMSG (User Message Writer) . 

3.4.27.1 Entry Point: USRMSG. 

3.4.27.2 Purpose 

To print most NASTRAN user error tnesssges on the system output file. 

3.4.27.3 Calling Sequence 

CALL USRMSG(I) 

C0MM0N/MSGX/N,M,MS6(4,1O) 

where: 

I - Pointer into the MSG array. 

N - Not used in USRMSG. 

M - Not used in USRMSG. 

MSG(1,I) - If |MSG(1,I)| = 30, MSGWRT will call USRMSG. 

MSG(2,I) - Used by USRMSG as the internal message number. 

MSG(3,I), MSG(4,I) - Parameters for the I*^ message. 

3.4.27.4 Method 

USRMSG will print appropriate error message along with external message number, which is 
2000 plus internal message number. 

3.4.27.5 Design Requirements 

External message numbers output by USRMSG at present are: 2001--2137. 
USRMSG is called only by MSGWRT. 



3.4-41 (7/1/70) 



SUBROUTINE DESCRIPTIONS 

3.4.28 MATDUM (Matrix Dump (Print) Routine ). 

3.4.28.1 Entry Point: MATDUM. 

3.4.28.2 Purpose 

To print a general NASTRAN matrix. 

3.4.28.3 Calling Sequence 
CALL MATDUM(FILEA) 

FILEA - Seven-word array (matrix control block) - integer 

Word 

1 GINia name 

2 Number of columns 

3 Number of rows 

4 Form of matrix 

5 Type of matrix 

6 Maximum number of non-zero terms in any column 

7 Undefined 

3.4.28.4 Method 

The non-zero terms of each column are unpacked and printed. 

If the matrix control block does not contain legal values the table printer (see section 

3.4.29) is called. 

3.4.28.5 Design Requirements 

Open core at /TABPRX/. 

MATDUM must hold the non-zero band of the matrix in this area. 

Subroutine TABPRT and the FORTRAN 1/0 routines must be available to MATDUM, 



3.4-42 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.29 TABPRT (Table Printer ). 

3.4.29.1 Entry Point: TABPRT. 

3.4.29.2 Purpose 

To print any NASTRAN Data Block (especially tables). 

3.4.29.3 Calling Sequence 
CALL TA3PRT(FILEN) 

FILEN - GIN0 name of data block - inteqer - input. 

3.4.29.4 Method 

Each word is read, identified as to type -- integer, BCD, or real number and printed 10 
characters ler word, 10 numbers per line. Note that the identification method varies from 
machine to machine and is not 100% certain, i.e., certain words may be misidentified. 

3.4.29.5 Design Requirements 
Open core at /TA3PRX/. 

Double precision numbers v/ill not be correctly interpreted on the Univac 1108. 



3.4-43 



SUBROUTINE DESCRIPTIONS 

3.4.30 PRELgC (Position Data Block to Requested Record ). 

3.4.30.1 Entry Points: PREL(3C, L0CATE. 

3.4.30.2 Purpose 

To provide a convenient means of locating data records in data blocks output by the 
Input File Processor (IFP). 

3.4.30.3 Calling Sequence 
CALL PREL0C($n, BUFF, NAME) 

n - F0RTRAN statement number defining return taken in the event NAME is not in the 

FIST (i.e., data block is purged). 
BUFF - An array whose dimension equals the contents of the first word of /SYSTEM/ 

£lus_one. Used as a GIN0 buffer by PREL0C and L0CATE. 
NAME - GIN0 file name of data block to be read (integer). 
CALL L(i)CATE($n,3UFF,ID,IDX) 

n - F0RTRAN statement number defining return taken in the event that the requested 

record (defined by ID) is not present in the data block. 
BUFF - The same BUFF assigned when PREL0C was called. 

ID - The address of a two-word array. The first word is the integer record identifi- 
cation and the second word is the bit position in the trailer for the data block 
where the presence or absence of the record is defined. 
IDX - The contents of the third word of the record found will be stored in IDX 
(internal card number generated by IFP). 

Notes : 

1. If the data block is not purged, PREL0C will open the file and skip the header record. 

2. If the requested record is not present (as determined by the aonronriate trailer bit), no 
1/0 activity will occur. Otherwise, L0CATE will position the file to read the first data entry of 
the requested record (i.e., after the 3-word header for the record). See 2.3.2 for format of 
records and trailer. 



3.4-44 



UTILITY SUBROUTINE DESCRIPTIONS 



3. If the user does not read all data in a record and he wishes to use L0CATE to find 
another record, he should use FWDREC to skip the remainder of the current record prior to calling 
L0CATE. 

4. For optimum efficiency in processing a data block, the user should call L0CATE in 
the order in which the records appear on the data block, i.e. NASTRAN collating order. 
3.4.30.4 Method 

PREL0C stores NAME in BUFF(l) and then calls 0PEN using BUFF(2) as the buffer address. If 
the data block is purged, the non-standard return is given to the user. Otherwise. FWDRFC is 
called to skip the header record and return is made to the user. LOCATE calls RDTRL to read the 
data block trailer. The bit position identified by ID{2) is tested usino ANDF. If zero, the 
non-standard return is given. Otherwise, three words from the file are read. If the first word 
equals ID(1), IDX is set to the third word and return is made. Otherwise, the first word is saved 
and the remainder of the record is skipped. The first three words of each successive record are 
read and the test for match on first word is made until (1) an end-of-file occurs in which case 
the file is rewound, the header record skipped and the process is continued. (2) a match is found 
in which case IDX is set and return is given or (3) a match with the first record read is found 
in which case the record is skipped, a warning message is queued and the non-standard return is 
given. 

3.4.30.5 Diagnostic Messages 

The following messages may be issued by PREL0C: 
2072 
3002 
3003 



3.4-45 



SUBROUTINE DESCRIPTIONS 

3.4.31 S jiRT (Sort a Table) . 

3.4.31 .1 Entry Point: S0RT. 

3.4.31.2 Purpose 

TO sort a core contained table, or to sort a logical record from a specified inout file, 
on a specified keyword in each entry. 

3.4.31.3 Calling Sequences 

To sort a core contained table: 

CALL S0RT(O,O,NWDS,KEYWD,TA3LE,NTABLE) 

NWDS - The number of words in each entry of the table. Restriction: NVIDS r. 20. 
KEYWO - The word position within each entry on which the sort is to take nlace. 
TABLE - Address where the table is stored. 

NTABLE - Total number of words in the table (NTARLE must be an integral multiple of 
NWDS). 
To sort a logical record: 

C(i(MM«(N/SETUP/NFILE(5),BUF 

CALL S(JRT(INPFL,(3UTFL,NyDS,KEYWD.BL(}CK.NBLqCK) 

NFILE - The first three words must be set by the user prior to CALL S0RT with the 
GINia file names of three scratch files for use by S(JRT. Upon return to 
the user, NFILE(6) will contain the GIN0 file name of the file containing 
the sorted record. 
BUF - If INPFL = iSUTFL, then BUF points to an area in BL0CK where a GIN0 buffer 
is available for S0RT, i.e., BL0CK(BUF) is the buffer address. 
Restriction: BUF > NBL0CK. 
INPFL - GIN0 file name of data block containing the lonical record to he sorted. 
0UTFL - GIN0 file name of data block where the sorted record is to be written. 
If 0UTFL = 0, the sorted record will remain on NFILE(6). 



3.4-46 



UTILITY SUBROUTINE DESCRIPTIONS 

NUDS - The number of words in each entry of the record. Restriction: N''JDS ^ 20. 

KEYWD - Defined as above. 

BL0CK - An area in core to be used by S(i!RT to nerform the sort phase. 

NBL0CK - The number of computer words available at BL0CK. 

Notes : 

1. INPFL must be opened and positioned to the logical record by the user prior to 
entry to S0RT. The file is not closed by SjJRT. 

2. If 0UTFL f 0, this file must be opened and positioned by the user prior to entrv to 
S0RT. The file is not closed by S0RT. 

3. If INPFL = 0UTFL, the file is closed by S0RT, onened to write with rewind, and 
the sorted logical record is written as the first logical record on the file. The ^ile is 
not closed by SflRT. 

4. NFILE(6) is always closed with rewind. 
3.4.31.4 Method 

1. CiZIRE S0RT. The method used is a shuttle exchange or bubble sort which is optimum for 
data which is nearly in sort. The method is as follows: 

a. The key words of two successive entries are compared. If currently in sort, the 
process is repeated. If not, 

b. A search toward the beginning of the table is made to determine the position of the 
out-of-sort entry. 

c. From this position, the table is shifted one entry and the out-of-sort entry is 
inserted at its oroper oosition. 

d. If the last pair of entries have not been analyzed, the nrocess returns to step (a). 
Otherwise the sort is complete. 

2. FILE S8IRT. One GIN0 buffer is allocated at the end of BL0CK and a scratch file is 
opened to write. As many entries as can be held in the remaining core in BL0CK are read and 
sorted using the algorithm above. The sorted data is written as a logical record on the scratch 
file. This process is repeated until all data in the input record has been read and the sorted 



3.4-47 



SUBROUTINE DESCRIPTIONS 

strings written on the scratch file. If only one such sort was required, the sort is complete 
except for copying onto 0UTFL if requested. Otherwise, an optimum distribution of sorted recoros 
on two scratch files is computed using a Fibonacci sequence. The sorted strings are redistributed 
between two scratch files and the merge phase is entered. The two scratch files are read one 
entry at a time, merged, and new sorted entries written on a third scratch file. Note that, usina 
the Fibonacci sequence, one of the files containing sorted strings will have a greater number o^ 
strings (records) than the other. On each pass in the merge nhase, the merae occurs until the 
file with fewer strings is exhausted. At this point, the meraed file becomes the file with the 
larger number of sorted strings, the previous larger file becomes the file with the fewer strinas, 
and the previous file with fewer strings (which was exhausted) becomes the file onto which the 
merged strings are written. The process continues until the sort is complete. The resulting 
sorted record is copied onto 0UTFL if requested. 

3.4.31.5 Design Requirements 

The number of words per entry may not exceed 20. (A change in the dimension of the local 
variable TEMP may be made to relax this restriction.) 

The amount of core available at BL0CK must be at least one GIN0 buffer olus 2*NWDS during 
the core sort phase and three GIN0 buffers plus 2*NWDS durinn the merge nhase. 

The core table or logical record to be sorted must contain an integral number o-*" entries. 

3.4.31.5 Diagnostic Messages 

The following messages may be issued by S0RT: 
3001 
3002 
3008 



3.4-48 



(1) 

(2) 
(3) 
(4) 
(5) 
(6) 
(7) 
(8) 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.32 GMMATD (General Matrix MultipTv and Transpose - Double Precision) . 

3.4.32.1 Entry Point: GMMATD. 

3.4.32.2 Purpose 

To perform any one of the following matrix operations: 

[A] [B] = [C] 

[A]"^ [B] = [C] 

[A] [B]T = [C] 

[A]^ [ef = [C] 

[A] [B] + [D] = [C] 

[A]^ [B] + [D] = [C] 

[A] [3^ + [D] = [C] 

[A]^ [B]^+ [D] = [CJ 

where [A], [B], [C], and [D] are real double precision matrices. This routine is used for 
small in-core matrices, in non-NASTRAN packed format, in such modules as SMAl , SMA2, SMA3 and 
DSMGl . 

3.4.32.3 Calling Sequence 

CALL GMMATD(A,IR(2IUA,IC0LA,MTA,B,IR0WB,IC0LB,MTB,C) 

A - A real double precision matrix of IR0WA rows and IC(^LA columns stored in the 
singly dimensioned double precision variable A. 
N-B. A must be stored by rows . For example, if 

1.0 4.0 

[A] = 2.0 5.0 

3.0 6.0 

then the matrix must be stored in the FORTRAN double precision array A as follows: 

A(l) = 1.0 

A(2) = 4.0 

A(3) = 2.0 

A(4) = 5.0 

A(5) = 3.0 



3.4-4'} 



SUBROUTINE DESCRIPTIONS 

A(6) = 6.0 

(A is input only) . 

IR0WA - number or rows of [A] - input. 

IC.0LA - number of columns of [A] - input. 

MTA - Flag used to aetermine if [A] is to be transposed and to determine if the output 
matrix, [C], is to be zeroed out; that is, to determine if a matrix product only, of the form 
[A] [B] = [C], will be performed or if a product and (in effect) a sum, of the form 
[A] [B] + [D] = [C], will be performed. 

1. If MTA = 0, then [A] is not transposed and hence either Equation (1) or (3) will 
be performed, depending upon MTB. 

If MTA = +1 then [A] is transposed and hence either Equation (2) or (4) will be 
performed, depending upon MTB. 

MTA is input only. 

2, If MTA is less than zero, [C] is not zeroed out. Hence the routine, in this 
case, computes 

[A] [B] + [D] = [C] if I^A = -2 and MTB = 0. 
[A] [B]^ + [D] = [C] if MTA = -2 and MTB = 1 . 
[A]^ [E] + [D] = [C] if MTA = -1 and MTB = 0. 
[A]^ [E]^ + [D] = [C] if MTA = -1 and MTB = 1. 
(see MTB definition below; 
where D is a real double precision matrix of IR0WA rows and IC0LB columns if 
MTA = -2 and D is IC0LA x ICi3LB if MTA = -1. D must be stored row-wise at the 
location of C by the calling program. 
B - real double precision matrix, stored row-wise. See comments for A above - input. 
IR0WB - the number or rows of [B] - input. 
IC0LB - the number of columns of [B] - input. 

MTB - Transpose flag for [B]. If MTB = 0, [B] is not transposed. If MTB = 1, [B] is 
transposed. Note that MTA and MTB are independent and that only MTA controls whether or not 

3.4-50 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

[C] win be zeroed out, MTB is input only. 

C - real double precision matrix. Input (if MTA < 0) and output. 

Examples on the use of the routine: 

1. If [A] is 3x3 and [B] is 3x1 and [C] = [A] [B] is desired then: 

CALL GMMATD(A, 3, 3,0. B. 3,1.0,0. [C] is 3x1. 

2. If [A] is nxl and [B] is nxl and the dot product is desired ([A]^ [B]) then: 

CALL GMMATD(A,N,1,1.B,N,1,0,C). [C] is 1x1, a scalar. 

3. Compute [C] = ([X] [Y])^ where [X] is 5x4 and [Y] is 4x7: 

CALL GMMATD(Y.4,7.1.X,5,4,1,C). C is 7x5. 

4. Compute D = [A] [B]^ + [C] where [A], [B] and [C] are 3x3: 

DO 10 I = 1, 9 
10 D(I) = C(I) 

CALL GMMATD(A,3.3.-2,B.3.3,1,D). 

3.4.32.4 Method 

The first phase of the subroutine sets up integer loop limits which are functions of the two 
transpose flags. If MTA is not less than zero, the C array is zeroed out. Then the classical 
mathematical definitions of the above matrix products are carried out. 

3.4.32.5 Design Requirements 

The orders of the [A] and the [B] matrices in combination with the transpose flags must define 
a conformable matrix product. 

3.4.32.6 Diagnostic Messages 

The subroutine examines the tranpose flags in combination with the orders of the matrices to 
make sure that a conformable matrix product is defined by this input data. This test clearly is 
made for purposes of calling routine checkout only. No tests are made, nor can they be made, to 
insure that the calling routine has provided sufficient storage for arrays. If a conformable 
matrix product is not defined by the input arguments, fatal error message 2021 is printed. 

3,4-51 (12-1-69) 



SUBROUTINE DESCRIPTIONS 

3.4.33 GMMATS (General Matrix Multiply and Transpose - Single Precision) . 

3.4.33.1 Entry Point: GMMATS. 

3.4.33.2 Purpose 

To perform any one of the following matrix operations: 

[A] [B] = [C] (1) 

[Af [B] = [C] (2) 

[A] [B]"^ = [C] (^) 

[Af [sf = [C] (4) 

[A] [B] + [D] = [C] (5) 

[Af [B] + [D] = [C] (6) 

[A] [B]^ + [D] = [C] (7) 

[Af [B]^ + [D] = [C] (8) 

Where [A], [B], [D] and [C] are real single precision matrices. This routine is used for small 

in-core matrices in non-NASTRAN packed format in such modules as SDR2 and PLA3 and in the utility 
routine PREf-IAT. 
3.4.33.3 Calling Sequence 

CALL GMMATS(A,IR0WA,IC0LA.MTA,B.IR0WB.IC!3LB.MTB,C) 

This routine is exactly the same as subroutine GMMATD except that GMMATD operates on real 
double precision matrices, while GMMATS operates on real single precision matrices. See sub- 
routine description for GIWTD (see section 3.4.32) for details on subroutine arguments, method, 
design requirements and diagnostic messages. 



3.4-52 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.34 INVERD (Double Precision In Core Inverse Routine ) . 

3.4.34.1 Entry Point: INVERD. 

3.4.34.2 Purpose 

To compute the inverse of a real double precision matrix [A] and on option to solve the 
matrix equation [A] [X] = [B]. This routine is used to invert small in-core double precision 
matrices in non-NASTRAN packed format and is used as a utility routine in such modules as SMAl , 
SMA3 and DSMGl . 

3.4.34.3 Calling Sequence 

CALL INVERD (NDIM.A,N,3,M,0ETERM,ISING, INDEX) 

NDIM - The actual row dimension of the doubly subscripted arrays A and B in the 
calling program - integer - input. 

A - The square matrix to be inverted. [A]' upon return from INVERD is stored at 
A. Double precision - input and output 

N - The order of the matrix being inverted (the size of the upper left hand corner 

actually being inverted). N^ NDIM - integer - input. 
B - The column(s) of constants in the above equation. If [A] is to be inverted, 

then B is a dummy argument. The solution matrix [X] is returned at B. Double 

precision - input and output. 

M - The number of columns of constants. If M <_ 0, [A]" is comouted - intener - 
input. 

DETERM - The determinant of [A]. Double precision - output. 

ISING - Singularity indicator. If [A] is non-singular, ISING is set to 1; if [A] is 
singular, ISING is set to 2 - integer - output. 

INDEX - Doubly subscripted array of row dimension N and column dimension 3 used for the 
row and column interchanges - integer - internal working storage. 

3.4.34.4 Method 

The classical Gauss-Jordan method with full row and column interchanges is used. All 
arithmetic operations are double precision. 



3.4-53 



SUBROUTINE DESCRIPTIONS 

3.4.35 INVERS (Single Precision In Core Inverse Routine) . 

3.4.35.1 Entry Point: INVERS. 

3.4.35.2 Purpose 

To compute the inverse of a real single precision matrix [A] and on option to solve the 
matrix equation [A] [X] = [B]. This routine is used to invert small in-core single precision 
matrices in non-NASTRAN packed format and is used as a utility routine in such modules as SDR2. 

3.4.35.3 Calling Sequence 

CALL INVERS (NDIM.A.N.B.M.DETERM.ISING, INDEX) 

This routine is exactly the same as subroutine INVERD except that INVERD operates on real 
double precision matrices, while INVERS operates on real single precision matrices. All arith- 
metic operations are single precision. DETERM is real single precision. See subroutine descrin- 
tion for INVERD (see section 3.4.34) for details on subroutine arguments and method. 



3.4-54 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.36 PREMAT (Material Property Utility ). 

3.4.36.1 Entry Points: PREMAT, tW. 

3.4.36.2 Purpose 

To provide a utility routine for obtaininn material nroperties used by structural elet^ent 
subroutines. The first entry point, PREMAT, is called once by a module for initialization purposes. 
and then liAT can be called by the module's element subroutines repeatedly to fetch required 
material properties. 

3.4.36.3 Calling Sequence 

CALL PREMAT (Z.2Z,BFR,N1MAT,N2MAT,MPTF,DITF) 

Z - Integer array of open core given to the subroutine to store the material proper- 
ties and the direct input tables - input and output. 

ZZ - Same address as Z. Used as real in this routine - input and output. 

SFR - A GIN0 buffer (plus one cell) used by subroutine PREL0C as a buffer - input only. 

NIMAT - The length of open core, the Z array, given to PREMAT and MAT - Inteqer - 
input only. 

N2MAT - The length of open core used by PREMAT and MAT - intener - output only. 

MPTF - GIN0 file number of the Material Properties Table (ilPT) data block - input only. 

DITF - GIN0 file number of the Direct Input Tables data block, l^ DITF is negative, 
the routine assumes that the calling module is a Piecewise Linear Analysis 
module which implies material properties cannot be temperature dependent and 
that MATSl cards are to be read. 

PREMAT uses the 10 word of /SYSTEM/ which is the temperature set identification number for 
material properties chosen by the user in his Case Control Deck. PREMAT also uses /NAMES/ for 
various Gi;<l0 options. 



3.4-55 



SUBROUTINE DESCRIPTIONS 

CALL MAT (ELEMID) 

ELEMID - Integer element identification number; used only for diagnostic messages 
(see below) - input and output. 
C0MM0N/MATIN/MATID,INFLAG,TEMP,PLAARG,SINTH,C0STH 

HATID - Material property identification number - integer - input. 

INFLAG - Integer input flag which determines which sets of input data cards, MATl , MAT2, 
or MAT3, the routine will search in order to find MATID. Also INFLAG deter- 
mines in what format the output will be placed in the MAT0UT common block. 
Currently INFLAG may assume the values 1 throuah 7 defined as follows: 
INFLAG = 1 -- The material properties corresnonding to the MATID are outnut in 
"MATl" or isotropic material format (see /M,AT(3UT/ below). One dimensional 
elements such as R9D, BAR, SHEAR etc. require isotropic materials. If the 
MATID is not found among all the MATl material cards read by PREMAT, a fatal 
error occurs. 

INFLAG = 2 -- If INFLAG = 2, the material properties corresDonding to the 
HATID are output in "MAT2" or anisotropic material format. Two-dimensional 
elements such as TRMEM, TRIAl , QDPLT, QUADl etc. may use isotropic or 
anisotropic materials. First, the routine will try to find the MATID among 
the MATl cards. If it is found among the MATl cards, the variables E (modulus 
of elasticity), v (Poisson's ratio) and G (shear modulus) are used to construct 
the 3x3 symmetric matrix [G ] needed by two-dimensional elements, and the 
matrix is stored in /MAT0UT/: 



vE 
1-v' 



[G,] 



vE_ E 

-W7 1-v^ 



3.4-56 



UTILITY SUBROUTINE DESCRIPTIONS 

If the MATID is not found among the ^WT^ cards, the MAT2 cards are searched. 
If the MATID is not found among the MAT2 cards a ^'atal error occurs. If it is 
found, [G^], the 3x3 symmetric matrix input on the MAT2 card, is transformed 
by the matrix equation [G^] = [U]'''[G^] [U] and {a} = [U] {a^^}, where {a } is 
the temperature expansion coefficient vector innut on a MAT2 card. [U] is a 
function of sin 6 and cos 9 (see SINTH and C0STH below). 



[U] 



cos e sin-' 9 cos 9 sin 6 

sin^ e cos^ e -cos 9 sin 6 

-2 cos e sin 9 2 cos 6 sin 9 (cos^ 9-sin^ 



INFLAG = 3 -- If INFLAG = 3, it implies the inverse of the symmetric 2x2 
transverse shear matrix J will be stored in locations 16, 17 and 18 of 
/MAT0UT/. There are two cases: (1) the current MATID is not equal to the 
most recent MATID, MATID0, and (2) the current MATID is equal to the most 
recent MATID. 

1. If the current MATID is not equal to the most recent material identi-'^i- 
cation number (MATID0), the MATl cards are searched. If the MATID is 
found among the MATl cards, then locations 16,17 and 18 of /MAT0UT/ are 
set to 6, 0.0 and G respectively, where G is the shear modulus. If the 
MATID is not found among the MATl cards, the MAT2 cards are searched. 

If the MATID is not found among the MAT2 cards, a fatal error occurs. If 
it is found among the MAT2 cards, locations 15, 17 and 18 are set to zero. 

2. The current MATID is equal to the most recent MATID. If INFLG0, the 
most recent INFLAG is not 2, this is the same as case (1). If it is 2, 
then (a) if the MATID was found on a MATl card, locations 16, 17 and 18 
are set to G, 0.0 and G respectively; or (b) if the MATID was found on a 
MAT2 card, locations 16, 17 and 18 are set to 0.0. 

INFLAG = 4 -- If INFLAG is 4, this imnlies that only the density of the 
material, RH0, will be returned in /mT0UT/ and this in the first location. 
The MATID can be either on a MATl or MAT2 card. If the MATID cannot he ^ound 
among all MATl and MAT2 cards, a fatal error occurs. 



3.4-57 



SUBROUTINE DESCRIPTIONS 

INFLAG = 5 — INFLAG = 5 is reserved for use only by module PLAl . This option 
determines if the MATID is such that E, the modulus of elasticity, is defined 
as stress dependent by MATSl and TABLES! cards. If it is stress dependent, 
INDSTR, equivalenced to the first word of /MATgUT/, is set to +1. If not stress 
dependent, INDSTR is set to 0. Only MATl cards are admissible for INFLAG = 5. 

INFLAG = 6 — INFLAG = 6 is reserved for use by modules PLA3 and PLA4. The 
fourth word of /MATIN/, PLAARG (see below), is strain and is used as the inde- 
pendent variable in a table look-up for stress, which is stored in the first 
word of /MAT0UT/. Only MATl cards are searched to match the input MATID. 

INFLAG = 1 — INFLAG 7 implies that the material properties corresponding to 
the MATID w'll be output in MATS or orthotropic material format. Currently 
only the axisymmetric elements TRIARG, TRAPRG and T0RDRG use this option. If 
the MATID is found in the MATl set, the data &re stored in MAT3 format. If not 
found in the MATl set, the MAT3 set is searched. If not found here, a fatal 
error exists. 

INFLAG = 8 -- INFLAG = 8 is used only by two-dimensional element subroutines 
in modules PLA3 and PLA4. The fourth word of /MATIN/, PLAARG (see below), is 
stress (a) and is used as the ordinate in an inverse interpolation table look- 
up to obtain the abscissa which is strain (e). 

If either: a) the ordinate is in the range of the piecewise linear function 
defined by the table on a TABLES! bulk data card, or b) the ordinate is 
greater than the maximum (which is also the last) ordinate in the table but 
the slope of the line segment joining the last two points of the table is 
nonzero, then the second word of /MAT0UT/ is set to zero and the abscissa, 
obtained by inverse linear interpolation or extrapolation, is stored in the 
first word of /MATJiUT/. If either: a) the ordinate is less than the minimum 
(which is also the first) ordinate in the table, or b) the ordinate ,s 
greater than tiie iiaxijium ordinate in the table and the slope of the line 
segment joining the last two points of the table is zero, then the integer 
"1" is stored in the second word of /MAT0UT/ (and the first word of /MAT0UT/ 
is set to zero). Only MAT! cards are searched to match the input MATID. 

3.4-58 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

TEMP - Average element temperature. Used as the independent variable in a table look- 
up when it is determined that a material property is temperature dependent. 
Not used when INFLAG = 5 or 6. 

PLAARG - Element strain. Used as the independent variable in a table look-up when E, 

the modulus of elasticity, is defined as the first derivative of a strain-stress 
curve. Used only in the Piecewise Linear Analysis Rigid Format and only by 
modules PLA3 and PLA4. 

SINTH - Sine of the material property orientation angle. Used only when INFLAG = 2 

and the MATID is found among the MAT2 cards. Used to construct the [U] matrix 
referenced above. 

C0STH - Cosine of the material property orientation angle. The comments on SINTH, 
above, also apply here. 

C0MM0N/MAT0UT/ - (Output Common Block). Length 20 words. Depending upon the values of INFLAG, 
the output common block is defined variously as follows: 

1. MATl Format (INFLAG = 1) 

Uord Symbol Definition 

1 E Young's modulus (modulus of elasticity) 

2 G Shear Modulus 

3 V Poisson's ratio 

4 p Density 

5 a Thermal expansion coefficient 

6 T Thermal expansion reference temperature 

7 g Structural element damping coefficient 

8 o^ Stress limit for tension 

9 a Stress limit for compression 

10 a Stress limit for shear 
11-20 - Undefined 



3.4-59 (12-1-69) 



SUBROUTINE DESCRIPTIONS 

2. MAT2 Format (INFLAG = 2) 

Word Symbol Definition 

1 Gil 

2 G12 

3 G13 I The 3x3 symmetric material 

4 622 [ property matrix 

5 G23 

6 G33 

7 RH0Y Density 

8 ALPH1 

9 ALPH2 > Thermal expansion coefficient vector 

10 ALPH12 

11 T0Y Thermal expansion reference temperature 
T2 GEY Structural element damping coefficient 

13 SIGTY Stress limit for tension 

14 SIGCY Stress limit for compression 

15 SIGSY Stress limit for shear 
16-20 - Undefined 

3. Transverse Shear Inverse Matrix (INFLAG = 3) 

Word Symbol Definition 

1-15 - Unchanged 



16 Jll 

17 J12 



18 J22 

19-20 Undefined 

RHg Only Format (INFLAG = 4) 

Word Symbol Definition 

1 RH(3 Density 

2-20 - Undefined 



The 2x2 symmetric inverse of the 
transverse shear matrix 



3.4-60 (12-1-69) 



UTILITY subroutine: descriptions 



5. PLA1 Use Only (INFLAG = 5) 



Word 

1 

2-20 



Symbol 
INDSTR 



Definition 

Stress dependent flag 

Undefined 



6. Stress Functional Value (INFLAG = 6) 



Word 



1 



S ymbol 
PLAANS 



2-20 
MAT3 Format (INFLAG = 7) 



Word 

1 

2 

3 

4 

5 

6 

7 

8 

9 

10 

n 

12 
13 
U 
15 
16-20 



Symbol 
EX3 
EY3 
EZ3 
NUXY3 
NUYZ3 
NUZX3 
RH03 
GXY3 
GYZ3 
GZX3 
AX3 
AY3 ) 
AZ3 
TREF3 
GE3 



Definition 

Value of stress (o) as a function of 
£ (strain) 

Undefined 



Definition 

Young's Moduli x, y and z 
directions 

Poisson's ratios. Coupled strain 
ratios in the xy, yz, and zx 
directions 
Density 

Shear moduli 



Thermal expansion coefficients 

Thermal expansion reference temperature 
Structural element damping coefficient 
Undefined 



3.4-61 (12-1-69) 



SUBROUTINE DESCRIPTIONS 

8. Strain Functional Value (INFLAG = 8) 

Word Symbol Definition 

1 PLAANS Value of strain (e) as an inverse 

function of stress (a) 

if the input stress is in the 
jpri I p } range of the function 

^- 1 if the input stress is outside 
the range of the function 

3-20 Undefined 

3.4,36.4 Method 

1. PREMAT: All the MATl, MAT2 and MAT3 cards are read from the MPT data block into open 
core so that each card is assigned 1 + 3*N words of core where N, a function of the card type, is 
the number of material property data items on that card type. The first word is the material iden- 
tification number and each material property is allocated 3 words: the first the input material 
property; the second a table (function) number which gives this material property as a function of 
temperature; the third a table number which gives this material property as a function of stress. 
Initially words 2 and 3 are set to zero. Although the third word is currently used only for MATl 
cards and for E, the modulus of elasticity, on that card, future development may make use of a 
more general application of stress dependent material properties. If there are no temperature 
dependent material properties for a non-Piecewise Linear Analysis problem, PREMAT is wrapped up 
and a RETURN to the calling routine is executed. 

For a non-Piecewise Linear Analysis problem for which a temperature set for material proper- 
ties was selected in the user's Case Control Deck, all MATT! , MATT2 and MATT3 cards are read into 
open core from the MPT data block. For a Piecewise Linear Analysis problem MATSl cards are read 
into open core from the MPT. A sorted list, with duplicates discarded, of the table numbers refer- 
enced on these cards is constructed in open core. This table number list is constructed so that 
every referenced table has eleven locations allocated to it. These eleven locations are used as a 
dictionary for the tables. The contents are: the table number (word 1); the table type 1,2,3, or 
4 (word 2); pointers to the first and last entries in the table (words 3 and 4); parameters from 
the TABLE card (words 5 through 11). The DIT data block is then read. For each table read, it is 
determined by scanning the table number list whether or not the table is required for problem 

3.4-62 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

solution. If it is required, the table is read into open core and the dictionary entry for the 
table is completed. For a required table which is a type 4 (polynomial) table, the functional 
values of the polynomial at the end points of the interval of the real line over which the 
polynomial is defined are calculated by an "internal subroutine" and stored in the table 
dictionary. If the table is not required, it is read until an end-of-table indicator is sensed. 
This process continues until all tables of the set TABLEMl , TABLEM2, TABLEM3 and TABLEM4 or of 
the set TABLESl, are exhausted. When all referenced tables have been read into core, PREMAT is 
wrapped up and a return is generated. 

2. MAT: The basic logic of the MAT routine is straightforward. Eight types of table look- 
ups, described above for INFLAG = 1, 2, 3, 4, 5, 6, 7 and 8 are supported. A computed-go-to on 
INFLAG is executed and each option is carried out as described above. "Internal subroutines" 
which are entered via F0RTRAN ASSIGN and G0 T0 statements and return to their correct "calling" 
locations via ASSIGNED G0 T0's are used liberally by MAT. It should be noted that each time MAT 
is called, MATID, INFLAG and other applicable input items, are saved. On the next call if the 
input is identical with the input of the previous call, nothing is stored in /MAT0UT/. Hence, 
the calling routine should use /MAT0UT/ as a "read-only data set". 

3.4.36.5 Design Requirements 

Subroutine GMMATS is the only non-root segment subroutine used by this routine. There are no 
other special requirements. 

3.4.35.6 Diagnostic Messages 

The following messages can be output via PREMAT and/or MAT: 3008, 2017, 2018, 2019, 2041, 
2042, 2103, 2112, 2113, 2114, 2115, 2116, and 2117. 



3.4-63 (12-1-69) 



SUBROUTINE DESCRIPTIONS 

3.4.37 PRLTRD (Utility for Modules Which Use the CSTM Data Block - Double Precision Version ). 

3.4.37.1 Entry Points: PRETRD, TRANSD 

3.4.37.2 Purpose 

A utility routine for modules which use the CSTM (Coordinate System Transformation Matrices) 
data block, TRANSD generates a real double precision 3x3 direction cosine matrix which mans a 
vector from a local coordinate system to basic coordinates. PRETRD sets uo eventual calls to 
TRANSD. For a module to use TRANSD a call to PRETRD is made once and only once. 

3.4.37.3 Calling Sequence 

CALL PRETRD(CSTM.NCSTM) 

CSTM = array of coordinate system transformation matrices (see data block descrintion 
for CSTM, section 2.3) - mixed - input. 

NCSTM = length of the CSTM array. NCSTM = 14*the number of coordinate svstems in the 
CSTM data block - integer - input. 

CALL TRANSD(ECPT,TA) 

ECPT = array of length 4. The first word is an inteoer coordinate system identification 
number and the next 3 words are the components of a vector in basic coordinates - 
input only. 

TA = real double precision 3x3 direction cosine matrix which maps a vector from the 
local coordinate system designated by ECPT(l) to basic coordinates - output. 

3.4.37.4 Method 

The CSTM array is searched to find a coordinate system transformation identification number 
that matches ECPT(l). If the coordinate system is rectangular, the 3x3 matrix, call it T, which 
is in words 5 through 14 of the CSTM blocks, is stored in TA and a RETURN is generated. If the 
coordinate system is basic, the identity matrix is returned. If the coordinate system is spherical 
or cylindrical, we calculate 



= [if {E - V' 



where E is the input vector stored at ECPT(2) and V is the translation offset vector in basic 



3.4-64 



UTILITY SUBROUTINE DESCRIPTIONS 



coordinates found in the CSTM block in words 3, 4 and 5; and 



i A-'ui." 



vF+y 



If the coordinate system is cylindrical define: 







~x/r 


-y/r 


0" 


\ 


= 


y/r 


x/r 















1. 



If the coordinate system is spherical define: 



Vx' + y' + z% 

^x/e ^ -y/r- 
y/^ II x/r 



_Z/J!, 



■rd 0.0 



Then TA = TT is computed and the subroutine returns to the calling program. 

3.4.37.5 Design Requirements 

The routine is designed so that a module which uses the CSTM data block can have a utility 
routine to fetch a coordinate system transformation matrix. Typically, a module driver will 
attempt to open the file which contains the CSTM data block. If the data block is not Durged, 
the module will read the entire data block into open core, close the file and call PRETRD to 
transmit the address of the array and the length of the array. Once this initialization call 
has been made, TRANSD may be called in the module as many times as necessary. The routine Hoes 
not perform any 1/0 operations. The routine assumes the format of the CSTM data block, as outlined 
in the Data Block Description for the CSTM (section 2.3 of the Programmer's Manual) is correct, and 
no numerical checks are made. 

3.4.37.6 Diagnostic Messages 

If the coordinate system identification number transmitted via ECPT(l) can not be found in 
the CSTM array user fatal message 2025 occurs. The user should check coordinate system numbers 
on GRID bulk data cards against those defined on C0RD1C, C0RD1R, etc, bulk data cards to insure 
that there are no undefined coordinate systems. 



3.4-65 



SUBROUTINE DESCRIPTIONS 

3.4.38 PRETRS (Utility for Modules Which Use the CSTM Data Block - Single Precision Version) . 

3.4.38.1 Entry Points: PRETRS, TRAHSS. 

3.4.38.2 Purpose 

A utility routine for modules which use the CSTM (Coordinate System Transformation Matrices) 
data block, TRANSS generates a real single precision 3x3 direction cosine matrix which maos a 
vector from a local coordinate system to basic coordinates. PRETRS sets up eventual calls to 
TRANSS. For a module to use TRANSS a call to PRETRS is made once and only once. 

3.4.38.3 Calling Sequence 

CALL PRETRS(CSTM,NCSTM) 

CALL TRANSS(ECPT,TA) 

This routine is exactly the same as subroutine PRETRD (see section 3.4.37) and TRANSD 
except that TRANSD, an entry point, returns a real double precision matrix TA and uses double 
precision arithmetic, while TRANSS returns a real sinc|1e precision matrix TA and uses sinnle 
precision arithmetic. See subroutine description for PRETRD for details on subroutine arguments, 
method, design requirements and diagnostic messages. 



3.4-66 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.39 PRETAB (Table Look-Up ). 

3.4.39.1 Entry Points: PRETAB, TAB. 

3.4.39.2 Purpose 

To read tables (functions) from the data block DIT, Direct Input Tables, into core and to 
set up table dictionaries which are subsequently used when the calling routine requests a 
functional value from a table via a call to the entry point TAB. The routine is designed so 
that PRETAB is called once and only once by a module and so that TAB may be called many times as 
a table look-up routine. 

3.4.39.3 Calling Sequence 

CALL PRETAB(DITF.Z,IZ,BUF,LCRGVN,LCUSED,TABN0L.LIST) 

DITF - GINI3 file number of the Direct Input Tables data, block - integer - input. 

1 - Array of core given to the subroutine as working storage - real - Input and 

output. 

IZ - Same address as Z. Used as integer in this routine. 

BUF - A GIN0 buffer (plus one cell) used by subroutine PRELJIC - input. 

LCRGVN - The length of Z array, given to PRETAB and TAB - integer - input. 

LCUSED - The number of cells of core used by PRETAB - integer - output. 

TABN0L - List of table numbers that the calling routine will be referencing via TAB 
calls. TABNjSLd) = N is the number of tables to be referenced. TABN0L(2), 
... , TABN0L(N +1) contain the table numbers. Note that is an admissible 
table number. Table defines a function which is Identically zero for 
all values of the independent variable - integer - input. 

LIST - Array of control words for subroutine LOCATE and table types. LIST(l) = M 
is the number of triples which follow in the list. The first two words of 
each triple are the subroutine LOCATE control words for the particular table 
being referenced and the third word is the table tyoe: 1 , 2, 3 or 4 - integer 
input. 



3.4-67 



SUBROUTINE DESCRIPTIONS 

CALL TAB(TABID,X,Y) 

TABID - Table number - integer - input. 

X - Abscissa for table number TABID at which the functional value is desired - real - 

input. 
Y - Functional value (ordinate) of abscissa X for table number TABID - real - output. 

3.4.39.4 Method 

PRETAB: For each table in the TABN0L list an 11 word table dictionary entry is defined in 
open core. The first word in each entry is the table number obtained from the TABN0L list. Then 
the DIT data block is read. For each entry of the DIT, it is determined whether or not this table 
number is in the TABNfIL list. If it is not, then the table is read serially until an end-of-table 
indicator is sensed. If it is a table called for in the TABN0L list, the program sets words 2 and 
3 of the table dictionary, the table type (1,2,3 or 4) and the pointer to the 1st entry in the 
table respectively. The table is then read into core, and the 4th word of the table dictionary, 
the pointer to the last entry in the table, is set. Words 5 through 11 of the dictionary, the 
table parameters, are set. If the table type is 4, indicating a polynomial, the functional values 
of the polynomial at the end points of the interval of the real line over which the polynomial is 
defined are calculated. After the tables for an entry in the LIST array have been exhausted, a 
check is made to determine if all tables in the TABN0L list have been found (after each table is 
found the table number is set negative). If all tables have been found, the table numbers in 
TABNI3L are set to their original positive status and the routine is wrapped up. If all tables 
have not been found, the next class of table cards, defined by the next triple in the LIST array, 
are located in the DIT data block and the process is repeated. 

TAB: The table dictionary is searched until a match is found with the input argument TABID. 
The table type (1, 2, 3 or 4) is determined, the (functional) argument is computed after a 4-way 
branch on table type, and a transfer is made to either the "internal subroutine" which performs 
linear interpolation-if the table type is 1, 2 or 3--or the "internal subroutine" which performs 
polynomial evaluation--if the table type is 4. 



3.4-68 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.39.5 Design Requirements 

DIT must not be purged. Enough open core must be made available to construct the table 
dictionaries and to contain all referenced tables in core. All table numbers must be unique. 
All table numbers input via the TABN0L array must be found in the DIT data block. A table 
number referenced by the TABID argument of TAB must have been referenced previously in the TABN0L 
array. 

3.4.39.5 Diagnostic Messages 

The following diagnostic messages may appear: 
3008 
2088 
2089 
2090 



3.4-69 



SUBROUTINE DESCRIPTIOMS 

3.4.40 AXIS (Draw an Axis on a Plot ). 

3.4.40.1 Entry Point: AXIS. 

3.4.40.2 Purpose 
To draw an x or y axis on a plotter. 

3.4.40.3 Calling Sequence 
CALL AXIS{X1.Y1,X2,Y2,PEN,!3PT) 
C(}MM8IN/PLTDAT/ - see PLTDAT Miscellaneous Table description, section 2.5. 

where : 

XI, YL = starting point of the axis line - real - input. 

X2,Y2 = terminal point of the axis line - real - input, 

PEN = pen number or line density to be used (its meaning depends on the plotter) 
- integer - input. 

!-l to initiate the line mode. 
+1 to terminate a series of plot commands, ^ - integer - input 
to draw an axis. 

/PLTDAT/ 

MJIDEL = plotter model number - integer - input. 

PL0TER = plotter number (i) - integer - input. 

NPENS = largest number of pens or maximum density for plotter i - integer - input. 

3.4.40.4 Method 

This subroutine calls LINE or AXISi, depending on whether the plotter has available a single 
conmand used for drawing an axis. At this writing, only plotter 3 has a special axis command. 

If SIPT ;* 0, all other arguments are ignored, and LINE or AXISi is called. Otherwise, 
alternate pen number (PENX) is calculated modulo NPENS and is used as the pen number passed to 

3.4-70 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

LINE or AXISi, as follows: 

PENX = PEN - NPENS * ((PEN-1)/NPENS) 

3.4.40.5 Design Requirements 

Generally. AXIS or LINE should be called with 0PT = -1 before axes are generated, even though 
it is not necessary to specifically put all plotters in the line mode (e.g., plotter 3). Once 
this is done, it need not be repeated unless the plotter has been put into some other mode (e.g.. 
the typing mode). 

Subroutines used: LINE, AXISi. 



3.4-71 (12-1-69) 



SUBROUTINE DESCRIPTIONS 

3.4.41 AXISi (Axis Routine for Plotter i ). 

3.4.41.1 Entry Point: AXISi. 

3.4.41.2 Purpose 

To set up a plot command to draw an x or y axis on plotter i. 

3.4.41.3 Calling Sequence 

CALL AXISi(Xl,Yl,X2,Y2,PEN.0PT) 

C8IMM0N/PLTDAT/ - see PLTDAT Miscellaneous Table description, section 2.5. 

where: 

XI. Yl = starting point of the axis line - real - input. 

X2,Y2 = terminal point of the axis line - real - input. 

PEN = pen number or line density to be used (meaning depends on plotter)- integer - 
input. 

!-l to initiate the line mode \ 

+ 1 to terminate a series of plot commands \ -integer - input. 
to draw an axis / 

/PLTDAT/ 

XYMIN = minimum x and y values of the region permitted on plotter i - real - input. 

XYMAX = maximum x and y values of the region permitted on plotter i - real - input. 

0RIGIN = location of the lower left corner of the plotter relative to its true physical 
origin - real - input. 

3.4.41.4 Method 

Taking into account the true origin of the plotter, the plot comnand is generated. 



3.4-72 (12-1-69) 



SUBROUTINE DESCRIPTIONS 



3.4.41.5 Design Requirements 
Subroutine used: WPLTi. 



3.4-72a (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.42 SKPFRM (Skip a Variable Number of Frames ). 

3.4.42.1 Entry Point: SKPFRM. 

3.4.42.2 Purpose 

Tc skip a variable number of frames, if appropriate to the plotter. 

3.4.42.3 Calling Sequence 
CALL SKPFRf4 (BFRAMS) 

C0MM0N/PLTDAT/ - see PLTDAT Miscellaneous Table description, section 2.5. 

where: 

BFRAMS = number of frames to be skipped - integer - input. 

/PLTDAT/ 

M(ilDEL = plotter model number - integer - input. 

PL0TER = plotter number - integer - input. 

REG = plot region parameters - real - input. 

AXYMAX = size of the paper (x.y) used, less the borders, in plotter units - real - input. 

EDGE = size of the borders (x.y) in plotter units - real - input. 

CAMERA = currently active camera - integer - input. 

0RIGIN = location (x,y) of the lower left corner of the plotter relative to its true 
physical origin - real - input. 

3.4.42.4 Method 

For plotters 3 and 9. the specified number of frames (BFRAMS) are skipped. For plotters 4 
to 7, the remainder of the current plot is skipped, and another half plot is also skipped. For 
plotters 1, 2 and 4. nothing is done due to the absence of any automatic method of skipping blank 
paper. 

3.4-73 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 



3.4.42.5 Design Requirements 

Subroutines used: LINE, WPLTi , 



3.4-73a (12-1-69) 



SUBROUTINE DESCRIPTIONS 

3.4.43 SEi C AM (To Initiate £ New Plot ). 

3.4.43.1 Entry Point: SELCAM. 

3.4.43.2 Purpose 

To select a camera and/or to generate a setup record for a new plot. 

3.4.43.3 Calling Sequence 

CALL SELCAM (CAMERA, PLTNUM,0PT) 

C{)MM0N/PLTDAT/ - see PLTDAT Miscellaneous Table description, section 2.5. 

where: 

CAMERA = camera number to be selected (if appropriate) - integer - input. 

PLTNUM = plot number - integer - input. 

0PJ j( = if the camera is to be selected when appropriate, and nothing is to be done 
when not appropriate - integer - input. 

/PLTDAT/ 

[■1I3DEL = plotter model number - integer - input. 

PL0TER = plotter number - integer - input. 

XYMAX = size of the paper (x,y) used, less the borders, in plotter units - real 
- input. 

EDGE = size of the borders (x,y) in plotter units - real - input. 
CAMNUM = last selected camera - integer - output. 

0RIGIN = location (x,y) of the lower left corner of the plotter relative to its true 
physical origin - real - input and output. 

3.4.43.4 Method 

If 0PT ?( and a camera is not appropriate to the plotter, nothing is done by this subroutine. 

3.4-74 (12-1-69) 



SUBROUTINE DESCRIPTIONS 

Otherwise, what is done is dependent upon the plotter hardware requirements. 

For plotters 1, 2 and 8, the plotter is stopped with the plot number displayed in the console 
lights. For plotters 2 and 9 the specified camera is selected. And for plotters 4 to 7, a block 
address record with the plot number is generated. 

3.4.43.5 Design Requirements 

Subroutines used: APLli , LINE. 



3.4-74a (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.44 IDPLglT (Generate an " ID" Plot). 

3.4.44.1 Entry Point: IDPL0T. 

3.4.44.2 Purpose 

To identify the owner of all the plots by printing the information contained on the PL0TID 
card in the user's Case Control Deck prior to generating the first plot. 

3.4.44.3 Calling Sequence 
CALL IDPL(2T (IDX) 
C0MM0N/0UTPUT/SKIP{32,6),ID(32) 

C0MM0N/PLTDAT/ - see PLTDAT Miscellaneous Table description, section 2.5. 

where: 

(o if a plot id was not generated I 
IDX = \ - integer - output. 

(1 if a plot id was generated ) 

/0UTPUT/ 

ID = user supplied PL0TID, in the Case Control Deck - BCD - input. 

/PLTDAT/ 

XYMIN 



XYMAX 



= ^plot region parameters - real - input. 



AXYMAX = size of the paper (x,y) used, less the borders, in plotter units - real 
- input. 

EDGE = size of the borders (x,y) in plotter units - real - input. 

CNTX,CNTY= number of counts per printed character in the x and y directions respectively 
- real - input. 

PLTYPE = plotter type - integer - input. 



3.4-75 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

3,4,44.4 Method 

If there is no PLI2TID (ID = blanks), IDX is set to zero and no identification is generated. 
Otherwise, IDX is set to one and an identification is generated. Tt-e current region parameters 
are saved (they will be restored at the end of the subroutine) and are set to include the entire 
paper area. The identification generated varies, depending upon the plotter type. 

If the plotter is a microfilm plotter (|PLTYPE| = 1), an entire frame is generated as identi- 
fication. The top and bottom of the frame are a series of closely spaced horizontal lines. The 
PL0TID is then printed three times in the center of the frame. 

If the plotter is a drum or table plotter (|PLTYPE| f 1), the identification is printed once 
at the very bottom of the paper within the bottom border. 

After the identification is generated, the PL0TID is set to blanks. This insures that the 
identification will be generated prior to the first plot only. 

3.4.44.5 Design Requirements 

Subroutines used: AXIS, PRINT. 



3.4-75a (12-1-69) 



SUBROUTINE DESCRIPTIONS 

3.4.45 INTGPX (Search a List of Integers) . 

3.4.45.1 Entry Points: INTGPX, INTGPT. 

3.4.45.2 Purpose 

Given a list of N integers, to find the index of the list item equal to ITEM (primarily used 
to search a list of external grid point id's). 

3.4.45.3 Calling Sequence 

CALL INT6PX(LIST,N) 
K = INTGPT (ITEM) 

where : 

LIST = list of N integers, in arbitrary order - input. 

N = number of entries in LIST - integer - input. 

ITEM = integer for which a match is to be found in LIST - input. 

3.4.45.4 Method 

Search LIST using a linear search until a match for ITEM is found. Then the result (INTGPT) 
is set equal to the index of LIST where the match occurs. If no match is found, the result is 
set = 0. 

3.4.45.5 Design Requirements 

INTGPX must be called before INTGPT is used. As long as LIST does not change location and 
the value of N does not change, INTGPX need not be called again. 



3.4-76 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.46 INTLST (Interpret a List of Integers ). 

3.4.46.1 Entry Point: INTLST. 

3.4.46.2 Purpose 

To interpret a list of integers and/or pairs of integers separated by the word T0 or THRU. 

3.4.46.3 Calling Sequence 

CALL INTLST(LIST,N,SIGN,N1,N2) 

where : 

LIST - the list to be interpreted - integer - input. 

N - index location of the next list iteni{s) to be interpreted - integer - input. 

SIGN - s-'in (+1) of the interpreted integer or the first of a pair of integers - 

output. 
Nl - absolute value of the interpreted integer or the first of a pair of integers - 

output. 
N2 - absolute value of the second integer of pair of integers (= Nl if not a pair) - 

output. 

3.4.46.4 Method 

SIGN = +1 if LIST(N) is positive or negative. 
Nl = absolute value of LIST(N). 

If LIST(N+1) ?( T0 or THRU, then N2 = Nl and N is incremented by 1. 
If LIST(N+1) = T0 or THRU, then N2 = absolute value of LIST(N+2) and N is incremented 
by 3. 

3.4.46.5 Design Requirements 

Initially, N must be set to the index of the first integer or integer pair to be interpreted 
in LIST. If the list is consecutive, N need not subsequently be altered until a new list is to 
be interpreted. It is advisable that the value following the last item in LIST be set = to 
avoid the chance that it may equal T0 or THRU. 



3.4-77 (12-1-69) 



SUBROUTINE DESCRIPTIONS 

3.4.47 LINE (Draw a Line on a Plotter ). 

3.4.47.1 Entry Point: LINE. 

3.4.47.2 Purpose 
To draw a line on a plotter. 

3.4.47.3 Calling Sequence 

CALL LINE(X1,Y1,X2,Y2,PEN,0PT) 

C0MM0N/PLTDAT/ - see PLTDAT Miscellaneous Table description, section 2.5 

where: 

Xl.Yl = starting point of the line - real - input. 

X2,Y2 = terminal point of the line - real - input. 

PEN = pen number or line density to be used - integer - input. 
^-1 to initiate the line mode 

0PT = \+l to terminate a series of plot commands. } integer - input. 



to draw a line. 



/PLTDAT/ 

M0DEL = plotter model number - integer - input. 

PL0TER = plotter number (i) - integer - input. 

REG = X and y values defining the region in which the line is to be drawn - real - 

input. 
NPENS = maximum number of pens or line density possible for plotter i - integer - input. 

3.4.47.4 Method 

If the line to be drawn is entirely outside the specified region, the subroutine immediately 
returns without drawing anything. If only part of the line is outside the region, only that 
portion of the line within the region is drawn. The actual pen number or line density used will 
be modulo the maximum number of pens or line density as follows: 

PENX = PEN - NPENS* ((PEN-1 )/NPENS) 
Then LINEi is called. 

3.4-78 (12-1-69) 



SUBROUTINE DESCRIPTIONS 

3.4.47,5 Design Requirements 

Generally, LINE should be called with 0PT = -1 before any lines are drawn, even though it is 
not necessary to specifically put all plotters in the line mode (e.g., plotter 3). Once this is 
done, it need not be repeated unless the plotter has been put into some other mode (e.g., the 
typing mode). If 0PT f 0, all other arguments are ignored. Subroutine used: LINEi. 



3.4-78a (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.48 LINEi (Draw a Line on Plotter i) . 

3.4.48.1 Entry Point: LINEi. 

3.4.48.2 Purpose 

To dra.w a line on plotter i. 

3.4.48.3 Calling Sequence 

CALL LINEi(Xl,Yl,X2,Y2.PEN JPT) 

C0MM(2N/PLTDAT/ - see PLTDAT Miscellaneous Table description section 2.5. 

where: 

XI, Yl = starting point of the line - real - input. 
X2,Y2 = terminal point of the line - real - input. 
PEN = pen number or line density to be used - integer - input. 

^-1 to initiate the line mode. ] 

0PT = <+l to terminate a series of plot commands. >- integer - input. 
' to draw a line. ; 

/FLTDAT/ 

M0DEL. = plotter model number - integer - input. 
PLATER = plotter number - integer - input. 
i4AXLEN = maximum length of a line segment - real - input. 

0RIGIN = X and y values of the current position of the pen (applicable only to incre- 
mental plotters) - real - input and output. 

3.4.48.4 Method 

If I3FT f 0, all other arguments are ignored. If (JPT = -1 and if applicable for plotter i, a 
flag is set so that when LINEi is subsequently called with 0PT = 0, the plotter will be put into 
the line mode before drawing the requested line. If 0PT = +1 and if applicable for plotter i, the 
pen is raised. Then, no matter which plotter is being used the current sequence of plotter 
commands is terminated. If {(PT = 0, the line is drawn as a series of line segments, each of 
maximum length MAXLEN. 

3.4-79 (12-1-69) 



SUBROUTINE DESCRIPTIONS 



3.4.48.6 Design Requirements 
Subroutines used: WPLTi. 



3.4-80 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.49 PRINT (Print a Title on a Plotter) . 

3.4.49.1 Entry Point: PRINT. 

3.4.49.2 Purpose 
To type a title on a plotter horizontally or vertically. 

3.4.49.3 Calling Sequence 

CALL PRINT(X,Y,XYD,CHR,N,0PT) 

C|i!MM0N/PLTDAT/ - see PLTDAT Miscellaneous Table description, section 2.5. 

where: 

X,Y - starting or ending point of the title to be typed (always left-to-right or 
top-to-bottom) - real - input. 

(+1 if X = starting or ending point of the title - integer - input. 
XYD -| an. 

(+2 if Y = starting or ending point of the title - integer - input. 
CHR - title to be typed (four characters/word - left adjusted followed by blanks) 

BCD - input. 
N - number of words in the title - integer - input. 

^-1 to initiate the typing mode. 
0PT -<+l to terminate a series of plot commands. \ - integer - input. 

' to type a title. 

/PLTDAT/ 

CNTCHR = number of plotter counts per character in the x and y directions - real - input. 

3.4.49.4 Method 

If 0PT f 0, all other arguments are ignored and TIRE is called. Otherwise, each character 
in the title (CHR) is separated and put into another array (C). This is done for each 20 words 
of the title (80 characters), and TIPE is then called to type these characters. 

3.4.49.5 Design Requirements 

Generally, one of the typing subroutines (PRINT, TIPE, TYPFLT, TYPINT, SYMB0L) should be 

3.4-81 (12-1-69) 



SUBROUTINE DESCRIPTIONS 

called with 0PT = -1 before any typing is attempted, even though it is not necessary to specifi- 
cally put all plotters in the typing mode (e.g., plotter 3). Once this is done, it need not be 
repeated unless the plotter has been put into some other mode (e.g., the line mode). 
Subroutines used: TIRE. 



3.4-82 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.50 RDM0DX (Read a File Containing XRCARD Translations) . 

3.4.50.1 Entry Points: RDM0DX, RDM0DY, RDM0DE, RDW0RD. 

3.4.50.2 Purpose 

Tc read from a file or storage a record containing the subroutine XRCARD interpretation of 
free field data cards (e.g., the PCDB data block). 

3.4.50.3 Calling Sequence 

CALL RDM0DX(FILE,M0DE„W0RD) 
CALL RDM0DY(A,M0DE.W0RD) 
CALL RDM0DE($ni,$n2,$n3) 
CALL RDW0RD 
where: 

FILE = GIN0 file name which is to be read - integer - input. 

M0DE = storage location into which the XRCARD mode value is to be read - integer - output. 

W0RD = 2 locations into which XRCARD card items are to be read - integer - output. 

A = array which is to be "read" (instead of FILE) - integer - input. 

ni = the F0RTRAN statement number defining the return at which numeric data are 
interpreted (M0DE < 0). 

n2 -■ the F0RTRAN statement number defining the return at which alphabetic data are 
interpreted (0 < M0DE < 1,000,000). 

ns = the F0RTRAN statement number defining the return when the end of a logical card 
is encountered (M0DE >^ 1,000,000). 

3.4.50.4 Method 

RDM0DX and RDM0DY are initialization calls for the file and core oriented options respectively. 
For RDM0DE: 

1. An XRCARD mode value is read into M0DE. If M0DE = 0, the end of a physical card 
has been encountered, but not the end of a logical card. In this case, the record is ter- 
minated (if FILE is being read). Then the first word of the next record or location is read 
into M0DE. 

3.4-83 (12-1-69) 



SUBROUTINE DESCRIPTIONS 

2. If M0DE < 0, the next word is read into W0RD(1). If M0DE = -4, another word is 
read into W0RD(2), 

3. If < M0DE < 1,000,000. BCD information follows as pairs of 4-character words. The 
first two of these words are read into NEXT(l) and NEXT(2). If NEXT(l) is a blank or NEXT(2) 
is a delimiter, the value of M0DE is decremented by one, and if M0DE is still greater than 
zero, the next two words are read into NEXT(l) and NEXT(2). This continues until either 
M0DE = 0. or NEXT(l) is not a blank and NEXT(2) is not a delimiter. If M0DE does become 
zero, step 1 is then re-executed. 

4. If M0DE >^ 1,000,000, the end of a logical card has been encountered. If FILE is 
being read, the current record is terminated. 

For RDW0RD: 

1. The two words now in NEXT(l) and NEXT{2) are stored in W0RD(1) and W0RD(2). 

2. M0DE is decremented by one. If M0DE is still gerater than zero, the next two 
words are read into NEXT(l) and NEXT(2). If NEXT(l) is a blank or NEXT(2) is a delimiter, 
this step is repeated until either M0DE = 0, or NEXT(l) is not a blank and NEXT(2) is not a 
delimiter. 

3.4.50.5 Design Requirements 

RDM0DX or RDM0DY must be called before RDM0DE and RDU0RD. As long as FILE does not change 
in value, and M0DE, W0RD, and A do not change locations, RDM0DX and RDM0DY need not be called 
again. If RDM0DX is called, FILE must be opened and properly positioned by the calling program. 
In addition, RDM0DE and RDW0RD cannot be called when FILE is closed. If an end-of-file or-record 
condition is encountered, a fatal error occurs (see subroutine FREAD). 



.4-84 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

3,4.51 SGINi3 (G1N0 for Unformatted Tapes) . 

3.4.51.1 Entry Points: S0PEN, SWRITE, SE0F, SCL0SE. 

3.4.51.2 Purpose 

To write unformatted BCD and binary tapes to drive NASTRAN plotters. 

3.4.51.3 Calling Sequences 

CALL S0PEN{$n,PLTTP, BUFFER, LBUFF) 

n -- F0RTRAN statement number defining the return if PLTTP is not available 
for writing. 

PLTTP - GIN0 file name of the plot tape. This may have two values: PLTl - BCD plot 
tape; PLT2 - binary plot tape - BCD - input. 

BUFFER - Array in which the plot data transmitted during SWRITE calls are stored. 
LBUFF - Length of the buffer array - integer - input. 

CALL SWRITE(PLTTP,DATA.LDATA,I0PT) 

PLTTP - GIN0 file name of the plot tape - BCD - input. 

DATA - Array of plot data (1 character/word, right justified, leading zeros). 

LDATA - Length of the DATA array in words - integer - input. 

(o, potentially more data to be transmitted in this record. 1 
i0PT -J integer - input. 

(1, end of record with this data transmission. | 

CALL SE0F(PLTTP) 

PLTTP - GIN0 file name of the plot tape on which a physical E0F will be written. 
CALL SCL|aSE( PLTTP) 

PLTTP - GIN0 file name of the plot tape. 

3.4.51.4 Method 

SGIN!3 stores data in BUFFER until I0PT = 1 or BUFFER is filled. It then transmits the data 
to a physical tape without any control words. The data are transmitted to SGIN0 1 character (right 

3.4-85 (12-1-69) 



SUBROUTINE DESCRIPTIONS 

justified, leading zeros) per word. SGIN0 packs these characters into fuil words. SGIN0 is in 
FORTRAN on all machines. On the IBM 7094 it interfaces with GIN0; the Univac 1108 version uses 
NTRAN; the IBM S/360 uses F0RTRAN 1/0; and the CDC 6600 use XI0RTNS, See section 5 for details. 

3.4.51.5 Design Requirements 

Only one of PLT1 or PLT2 may be open at one time. 

S0PEN must be called before SWRITE, SE0F, or SCL0SE. 

PLTl or PLT2 must be physical tapes if they are written on. 



3.4-86 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.52 STPLglT (To Initiate a New Plot or Terminate the Current Plot ). 

3.4.52.1 Entry Point: STPL0T. 

3.4.52.2 Purpose 

To initiate a new plot or terminate the current plot. 

3.4.52.3 Calling Sequence 

CALL STPL0T(PLTNUM) 

C0MM0N/PLTDAT/ - see PLTDAT Miscellaneous Table description, section 2.5. 

C(3MM0N/XXFARM/ - see XXPARM Miscellaneous Table description, section 2.5. 



where: 



if nonnegative, the plot number ) 
PLTNUM = [ - integer - input, 

(if negative, terminate the current plot 



/PLTDAT/ 

M0DEL = plotter model index - integer - input. 

PL0TER = plotter number - integer - input. 

REG = plot region parameters - real - input. 

XYMAX = size of the paper (x.y) used, less the borders, in plotter units - real - input. 

PLTYPE = plotter type - integer - input. 

PLTAPE = plot tape - BCD - input. 

10 if an end-of-file mark is to be written on the plot 

j tape after each plot 
^9f ^ { \ - integer - input. 

Jl if n£ end-of-file mark is to be written on the plot 

I tape after each plot 
/XXPARM/ 

CAMERA = camera number (if applicable) to be used - integer - input. 
BFRAMS = number of blank frames between plots - integer - input. 



3.4-87 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.52.4 Method 

A. If PLTNUM is nonnegatlve: 

1. Select the specified camera or create a setup record appropriate to the plotter 
(CALL SELCAM). 

2. Skip to a new frame (if applicable) and create the owner identification. If the 
owner identification is generated by subroutine IDPL0T, re-execute step 1 and skip to a 
new frame. 

3. If appropriate to this plotter, insert the desired number of blank frames on film 
only. If the camera specified is camera 2 (paper only), no blank frames are inserted. 

4. If the plot number is nonzero, type this number in the upper left and right corners 
of the picture. 

B. If PLTNUM is negative: 

1. Terminate the current plot tape record. 

2. Close the current plot tape file (CALL SCL0SE). 

3. If each plot is to be separated by an end-of-file mark (EOF = 0), write an end-of- 
file on the plot tape (CALL SEjJF). 

3.4.52.5 Design Requirements 

Subroutines used include: IDPL0T, SELCAM, SKPFRM, TYPINT, SCL|i)SE, SE0F. 



3.4-87a (12-1-69) 



SUBROUTINE DESCRIPTIONS 

3.4.53 SYMB0L (Type a Symbol on a Plotter) . 

3.4.53.1 Entry Point: SYMBOL. 

3.4.53.2 Purpose 

To type a symbol on a plotter. 

3.4.53.3 Calling Sequence 

CALL SYMB(3L(X,Y,SYM,SIPT) 

C0MM0N/PLTDAT/ - see PLTDAT Miscellaneous Table description, section 2.5. 
C0MM0N/SYMBLS/ - see SYMBLS Miscellaneous Table description, section 2.5. 

where: 

X,Y - point at which the symbol is to be typed - real - input. 

SYM - two consecutive storage locations each containing an index into the SYMBLS 
table - integer - input. 

!-l to initiate the typing mode. \ 
+1 to terminate a series of plot commands. > -integer - input. 
to type the symbol . / 

/PLTDAT/ 

M0OEL - plotter model number - integer - input. 

PL0TER - plotter number (i) - integer - input. 
/SYMBLS/ 

NSYM - number of symbols defined in the SYMBLS table - integer - input. 

SYMBL(20,i) - character indices defining the symbols of plotter i - integer - input. 

3.4.53.4 Method 

If 0PT t 0, all other arguments are ignored and TYPEi or DRWCHR is called. Otherwise, an 
alternate symbol index (SYMX) is calculated modulo NSYM for each index in SYM and is used as the 
actual symbol index, as follows: 

3.4-88 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIOtlS 

SYMX = SYM. - NSYM*((SYM. ,)/NSYM) , j = 1, 2. 

Then TYPEi or DRWCHR is called for each symbol. 

The reason for SYM being two indices is to enable the user to create any additional symbol 
by combining any two of the valid symbols in the SYMBLS table. Note: any of the indices in SYM 
may = 0. This would imply that a new symbol is not being created. 

3.4.53.5 Design Requirements 

Generally, one of the typing subroutines (PRINT, TIPE, TYPFLT. TYPINT, SYMBOL) should be 
called with 0PT ^ -1 before any typing is attempted, even though it is not necessary to put all 
plotters in the typing mode (e.g., plotter 3). Once this is done, it need not be repeated unless 
the plotter has been put into some other mode (e.g., the line mode). 

Subroutines used: TYPEi, DRWCHR. 



3.4-89 (12-1-69) 



SUBROUTINE DESCRIPTIONS 

3.4.54 TIPE (Type a Line of Characters on a Plotter ). 

3.4.54.1 Entry Point: TIPE. 

3.4.54.2 Purpose 

To type a line of characters on a plotter horizontally or vertically. 

3.4.54.3 Calling Sequences 

CALL TIPE (X,Y,XYD,CHR,N,(JPT) 

C8IMMJIN/PLTDAT/ - see PLTDAT Miscellaneous Table description, section 2.5. 

C0MM(JN/CHAR94/ - see CHAR94 Miscellaneous Table description, section 2.5. 

where: 

X,Y - starting or ending point of the line to be typed (always left-to-right or top-to- 
bottom) - real - input. 

!+l if X = starting or ending point of the line. ) 
- \ - integer - input. 

+2 if Y = starting or ending point of the line. ) 

CHR - line of characters to be typed (one character/word - left adjusted followed by 

blanks) - BCD - ir.put. 

N - number of characters to be typed - integer - input. 

^-1 to initiate typing mode. \ 

(3PT -<+l to terminate a series of plot commands. > - integer - input. 
V to type a line of characters. ) 

/PLTDAT/ 

M0DEL - plotter model number - integer - input. 

PL(JTER - plotter number (i) - integer - input. 

CNTCHR - number of plotter counts per character in the x and y directions - real - input. 
/CHAR94/ 

CHAR - Section I of the CHAR94 table - BCD - input. 

3.4-90 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 



3.4.54.4 Method 

If 0PT ^ 0, an other arguments are ignored and TYPEi or DRUCHR is called. Otherwise, for 
each character to be typed, an index into the CHAR character set is found. This is done 80 
characters at a time. If a character cannot be located, it is treated as a blank. For each set 
of 80 character indices set up, TYPEi or DRWCHR is called. 

3.4.54.5 Design Requirements 

Generally, one of the typing subroutines (PRINT, TIPE, TYPFLT, TYPINT, SYMB0L) should be 
called with 0PT f -1 before any typing is attempted, even though it is not necessary to put all 
plotters in the typing mode (e.g., plotter 3). Once this is done, it need not be repeated unless 
the plotter has been put into some other mode (e.g., the line mode). 

Subroutines used: TYPEi, DRWCHR. 



3.4-91 (12-1-69) 



SUBROUTINE DESCRIPTIONS 

3.4.55 TYPFi (Type a Line of Characters on Plotter i) . 

3.4.55.1 Entry Point: TYPEi . 

3.4.55.2 Purpose 

To type a line of characters on plotter i horiziontally or vertically. 

3.4.55.3 Calling Sequence 

CALL TYPEi{X,Y,XYD,CHR,N,0PT) 

C0MM0N/PLTDAT/ - see PLTDAT Miscellaneous Table description, section 2.5. 

C0MM0N/CHAR94/ - see CHAR94 Miscellaneous Table description, section 2.5. 

where: 

X,Y = starting or ending point of the line to be typed (always right-to-left or top-to 

bottom) - real - input. 

(+1 if X = starting or ending point of the line. I 
XYD = I - integer - input. 

(+2 if y = starting or ending point of the line. ) 

CHR = indices of the line of characters to be typed (see description for TIPE. section 
3.4.54) - integer - input. 

N = number of characters to be typed - integer - input. 

!-l to initiate the typing mode, \ 
+1 to terminate a series of plot commands) - integer - input. 
to type a line of characters. / 

/PLTDAT/ 

XYMIN = minimum x and y values of the region in which the line is to be typed - real - 
input. 

XYMAX = maximum x and y values of the region in which the line is to be typed - real - 
input. 

CNTCHR = number of plotter counts per character in the x and y directions - real - input. 



3.4-92 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

/CHAR94/ 

CHRC0D = Section II, III, or IV of the CHAR94 table - integer - input. 
3.4.55.4 Method 

If 0PT i^ 0, all other arguments are ignored. If 0PT = -1 and if applicable for plotter i, a 
flag is set so that when TYPEi is subsequently called with 0PT = 0, the plotter will be put into 
the typing mode before typing the first character. If 0PT = +1, the current sequence of plotter 
commands is terminated. 

Define: 

LSTCHR = last legitmale character index for plotter i. 

NCHR = number of character indices which must be changed for plotter i. 

CHAR = NCHR pairs of character indices. The first index of each pair is the index 
which must be changed, and the second index is the replacement index. 
If N _< 0, it is assumed that one character is to be typed. 

Each character index in CHR is checked against LSTCHR. If the index is greater than LSTCHR. 
a blank is inserted at the corresponding point on the plot. Otherwise, indices are altered if 
need be from CHAR and the character is typed. 

No characters will be typed outside the region as defined by XYMIN and XYMAX. 
3.4.55.5 Design Requirements 
Subroutines used: WPLTi. 



3.4-93 (12-1-69) 



SUBROUTINE DESCRIPTIONS 



3.4.55 TYPFLT (Type a Floating Point Number on a Plotter) . 

3.4.56.1 Entry Point: TYPFLT. 

3.4.56.2 Purpose 

To type a floating point number on a plotter, horizontally or vertically. 

3.4.56.3 Calling Sequence 

CALL TYPFLT (X.Y.XYD.V, FIELD, 0PT) 

C0MM0N/PLTDAT/ - see PLTDAT Miscellaneous Table description, section 2.5. 

where: 

- point at which the number is to be typed (always left-to-right or top-to-bottom) 



X,Y 



- real - input. 



XYD 



(+1 if X = starting or ending point of the typed number. I 
_ ) - J - integer - input. 

I +2 if Y = starting or ending point of the typed number. ) 
V - number to be typed - real - input. 
FIELD - field width of the typed number. If FIELD > 0, the number will be centered at 

(X,Y). If FIELD < 0, the number will be typed starting or ending at (X,Y). If 

|XYD| = 1 or 2, the number will be typed horizontally or vertically 

respectively - integer - input. 



-1 to initiate the typing mode. 



m 



I 



+1 to terminate a series of plot commands. I - integer - input. 



to type the number. 
/PLTDAT/ 

M0DEL - plotter model number - integer - input. 

PL0TER - plotter number (i) - integer - input. 

CNTCHR - number of plotter counts per character in the x and y directions - real - input. 

3,4,56.4 Method 

If 0PT ?* 0, all other arguments are ignored and TYPEi or DRWCHR is called. Otherwise, the 



3.4-94 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

number of significant digits (NSIG) to be typed is determined. 

If V > 0, the typed number will be unsigned. If FIELD > 4, the number of significant digits 
typed will be at least = FIELD - 4. If FIELD < 4, NSIG = FIELD - 1. 

If V < 0, the typed number will be signed. If FIELD > 5, the number of significant digits 
typed will be at least FIELD - 5. If FIELD <_ 5, KSIG = FIELD - 2. 

The number (V) is multiplied by some power of ten such that the product is between lo'' and 

Q 

10 . It can then be expressed as an 8-significant digit integer. If the number is such that NSIG 
digits cannot be typed without an exponent, a standard form is used: -X.XXXX ... + XX. Otherwise 
the decimal point is adjusted and the exponent will not be printed. 

3.4.56.5 Design Requirements 

Generally, one of the typing subroutines (PRINT, TIPE, TYPFLT, TYPINT, SYMB0L) should be 
called with 0PT = -1 before any typing is attempted, even though it is not necessary to put all the 
plotters in the typing mode (e.g.. plotter 3). Once this is done, it need not be repeated unless 
the plotter has been put into some other mode (e.g., the line mode). 
Subroutines used: TYPEi , DRWCHR. 

3.4.56.6 Diagnostic Messages 

If NSIG significant digits cannot possibly be typed in the field width (FIELD) specified, 
the entire field will be filled with asterisks (**...*). 



3.4-95 (12-1-69) 



SUBROUTINE DESCRIPTIONS 

3.4.57 TYPINT (Type an Integer Number on a Plotter) . 

3.4.57.1 Entry Point: TYPINT. 

3.4.57.2 Purpose 

To type an integer number on a plotter, horizontally or vertically. 

3.4.57.3 Calling Sequence 

CALL TYPINT (X.Y.XYD.NUM, FIELD, 0PT) 

C0MM0N/PLTDAT/ - see PLTDAT Miscellaneous Table description, section 2.5. 

where: 

X,Y - point at which the number is to be typed (always left-to-right or top-to-bottom) 
- real - input. 

!+l if X = starting or ending point of the typed number.) 
— ' - integer - input. 

+2 if Y = starting or ending point of the typed number.) 

NUM - number to be typed - integer - input. 

/+1 if the typed number is to be centered at (X.Y). If |XYDl = 1 or 2, the number 
will be typed horizontally or vertically, respectively. 
-1 or 0, the number will be typed starting or ending at (X,Y). If FIELD = -1, 
FIELD will be set to the number of digits typed by the subroutine; in this 
case, FIELD must be a symbol in the call statement. - integer - input and 
output. 

■ 1 to initiate the typing mode. \ 
0PT -{+1 to terminate a series of plot commands. \ -integer - input. 
to type the number. / 

/PLTDAT/ 

M0DEL - plotter model number - integer - input. 

PL0TER - plotter number (i) - integer - input. 

CNTCHR - number of plotter counts per character in the x and y directions - real - input. 



3.4-96 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.57.4 Method 

If 0PT fO, all other arguments are ignored and TYPEi or DRWCHR is called. Otherwise, each 
digit of the number is separated and used as character indices for the TYPEi or DRWCHR subroutines. 
In addition, if FIELD < 0, FIELD is set = the number of digits printed. 

3.4.57.5 Design Requirements 

Generally, one of the typing subroutines (PRINT, TIPE, TYPFLT, TYPINT, SYMB0L) should be 
called with 0PT = -1 before any typing is attempted, even though it is not necessary to 
specifically put all plotters in the typing mode (e.g., plotter 3). Once this is done, it need 
not be repeated unless the plotter has been put into some other mode (e.g., the line mode). 

Subroutines used: TYPEi, DRWCHR. 



3.4-97 (12-1-69) 



SUBROUTINE DESCRIPTIONS 

3.4.58 WPLT1 (Write a Plotter Conmand for Plotter 1) . 

3.4.58.1 Entry Point: WPLTl. 

3.4.58.2 Purpose 

To write a plotter command for plotter 1. 

3.4.58.3 Calling Sequence 

CALL WPLTl (A,0PT) 

C0MM0N/PLTDAT/ - see PLTDAT Miscellaneous Table description, section 2.5. 

C0MM0N/CHAR94/ - see CHAR94 Miscellaneous Table description, section 2.5. 

where: 

A(l) - x-coordinate (integer). 

A(2) - y-coordinate (integer). 

A(3) - annotation character index (a). 

A(4) - control character index (ci). 

A(5) - control character index (cz). 

A(6) - control character index (ca). 

(0, if A is a plot command ) 

0PJ .) } integer - input, 

(l , if a series of plot commands is to be terminated ) 

/PLTDAT/ 

EDGE - size of the x and y borders of the paper - real - input. 

PL0T - GINS) file name of the plot tape to be written - BCD - input. 

/CHAR94/ 

CHAR(60,3) - sections II, III, and IV of the CHAR94 character table - integer - input. 

3.4.58.4 Method 

If computer 1 (IBM 7094) is the computer being used, section II of the CHAR94 table is used 
as the characters written on the plot tape; if computer 4 (CDC 6600) section IV is used; if any 

3.4-98 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

other computer, section III is used. 

The lower left corner of the paper is assumed to be at (O.O). Taking into account the x and 
y borders, the true x and y coordinates are calculated. These coordinates are then separated into 
four integer digits. The plot command is then set up and written as follows: 

rbx4X2X2Xibby^y2y2yibCiC2bbc2babbbbb 

preceeded by 35 blanks. The resulting plot command is 60 characters long, 

r = record mark (character 49 in the CHAR94 table) 

b = blank (character 48 in the CHAR94 table) 

X. = x-coordinate digit 

y. = y-coordinate digit 

c. = control character 

a = annotation character. 

3.4.58.5 Design Requirements 

Subroutine used: SWRITE. 



3.4-99 (12-1-69) 



SUBROUTINE DESCRIPTIONS 

3.4.59 UPLT2 (Write a Plotter Command for Plotters 2 and 8 ) 

3.4.59.1 Entry Point: WPLT2. 

3.4.59.2 Purpose 

To write a plot conmand for plotters 2 and 8. 

3.4.59.3 Calling Sequence 

CALL UPLT2 {k,m) 

C0MMS)N/PLTDAT/ - see PLTDAT Miscellaneous Table description, section 2.5. 

C;JMM0N/CHAR94/ - see CHAR94 Miscellaneous Table description, section 2.5. 

where: 

A(l) = x-coordinate (integer). 

A(2) = y-coordinate (integer). 

A(3) = annotation character index (a). 

A(4) = control character index (ci). 

A(5) = control character index (02). 

A(6) = control character index (ca). 

(0, if A = plot command ) 

0PT =< /--integer - input. 

(1, if a series of plot commands is to be terminated' 

/PLTDAT/ 

AXYMAX - size of the paper (in plotter units) being used, less the border - real - input. 

PL0T - GIN0 file name of the plot tape to be written - BCD - input. 
/CHAR94/ 

CHAR(60,3) - sections II, III and IV of the CHAR94 table - integer - input. 

3.4.59.4 Method 

If computer 1 (IBM 7094) is the computer being used, section II of the CHAR94 table is used 
for the characters written on the plot tape; if computer 4 (CDC 6600), section IV is used; if any 

3.4-100 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

other computer, section III is used. 

Assuming the true physical origin of the plotter to be at tlie center of the paper, the true 
X and y coordinates are calculated. These coordinates are then separated into four integer digits. 
A plot command is then set up and written as follows: 

Xs^x^X2X2X^Ys v^y2y2yibbbbbbbbc^C2ac2 

preceeded by 96 blanks. The resulting plot command is 120 characters long. 
X = character X (character 34 in the CUAR94 table) 
Y = character Y (character 35 in the CHAR94 table) 
s^ = + or - character depending upon the sign of the x-coordinate. 
s = + or - character depending upon the sign of the y-coordinate. 
X. = x-coordinate digit, 
y. = y-coordinate digit. 

b = blank (character 48 in the CHAR94 table). 
c^ = control character. 
a = annotation character. 

3.4.59.5 Design Requirements 

Subroutine used: SWRITE. 



3.4-101 (12-1-69) 



SUBROUTINE DESCRIPTIONS 

3.4.60 WPLT3 (Write a Plotter Command for Plotter 3 ). 

3.4.60.1 Entry Point: WPLT3. 

3.4.60.2 Purpose 

To write a plot command for plotter 3. 

3.4.60.3 Calling Sequence 

CALL WPLT3 (A,0PT) 

C0HM0N/PLTDAT/ - see PLTDAT Miscellaneous Table description, section 2.5. 

where: 

A(l) and A(2) = 36 bit plot command set up by AXIS3, LINE3, or TYPE3, as 2 18-bit words 
(right justified, leading zeros) - input. 

(O, if A = plot command ) 

0PT =1 ) - integer - input. 

11, if a series of plot commands is to be terminated; 

/PLTDAT/ 

PL0T - GIN0 file name of the plot tape to be written - BCD - input. 

[■lAXCHR - plot tape buffer size (number of characters) - integer - input. 

3.4.60.4 Method 

Each plotter command is 36 bits long (6 six-bit characters). Six of the 36 bits in A(l) and 
A(2) are written on the plot tape until all 36 bits have been written. In addition, the number 
of six-bit characters written in a record is calculated. When WPLT3 is called with |i)PT = 1, a 
check is made to determine if the number of 6 bit characters written in the current record is 
an integer multiple of the number of characters per word on the computer. If such is not the case, 
an additional 36 bit command is written as many times as necessary until this condition does 
exist before terminating the plot tape record. The command used will do nothing to affect the 
generated plot. 

3.4.60.5 Design Requirements 
Subroutine used: SWRITE. 

3.4-102 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.61 GIN0I0 (GINg Input/Output Routine ). 

3.4.61.1 Entry Point: GIN0I0. 

3.4.61.2 Purpose 
6IN0I0 executes the physical input/output operations for subroutine RIN?. 

3.4.61 .3 Calling Sequence 

CALL GIN0I0($n,0PC!2IDE.BUFF) 

C0MM0N/GIN0X/LGIN2IX,FILEX,E0R,!3P, ENTRY, LSTNAM.N, NAME, NTAPE,XYZ(2),UNITAB(75),BUFADD(75), 
N3UFF3,ERR0R,N0SECT. 

n - F0RTRAN statement number defining return in the event of an 1/0 error. 

1, Rewind 

2, Write one block 
0PC0DE - (3, Read one block ) input - integer. 

4, Backspace one block 
'5, Forward space one block 

BUFF - Address of the block to be read or written. 

FILEX - Unit number of file - integer - innut. 

NBUFF3 - Length of block to be read or written - integer - innut. 

J 7, Abnormal completion of 1/0 operation 
8, Physical end-of-file encountered ^ integer - output. 

,9, Data transmission error 

N0SECT - Number of sectors per block on FASTRAND drum (Univac 1108 only) - integer - input. 

3.4.51.4 Method 

The machine cell in /SYSTEM/ is tested. For the IBM 7094 or IBM S/360 computers, F0RTRAN REWIND, 
iJRITE, READ and BACKSPACE operations are used. For the Univac 1108, the NTRAN routine is used. 

3.4.61.5 Design Requirements 

GIN0I0 is designed as an integral part of the GIN0 collection of routines and i s to be 
called only by GIN0. 



3.4-103 



SUBROUTINE DESCRIPTIONS 

Since all input/output operations by 61N0 are made by Glt<010, a change to interface with a 
new or different operating system can easily be made by modifying GIN0I0. 



3.4-104 



UTILITY SUljROUTINE DESCRIPTIONS 

3.4.62 EJECT (Automatic Page Eject) 

3.4.62.1 Entry Point: EJECT 

3.4.62.2 Purpose 

Automatic line counting for printed oulpul and new page initiation when pages are filled. 

3.4.62.3 Calling Sequence 

K = EJECT (LINES) 

C0MM0N /SYSTEM/ - see SYSTEM table description, section 2.4.1.8. 

where: 

LINES - Number of lines to be printed. 

/SYSTEM/ 

MAXLIN - Maximum number of lines permitted per page. 
LINCNT - Number of lines thus far printed on this page. 

3.4.62.4 Method 

If the number of lines already printed on this page (LINCNT) added to the number of lines 
about to be printed (LINES) would be greater than the number of lines permitted per page 
(MAXLIN), a new page is started (CALL PAGEl) , the current line counter is set to the number 
of lines to be printed (LINCNT = LINES), and the result of this function is set to 1 (EJECT = 1) 

If the number of lines about to be printed (LINES) will fit on this page (LINCNT + LINES <_ 
(^XLIN). the result of this function is set to (EJECT = 0). 

3.4.62.5 Design Requirements 

If it is desired to force a new page to be started, simply set LINCNT = MAXLIN before 
calling this function. 



3.4-105 



SUBROUTINE DESCRIPTIONS 

3.4,63 PLAMAT (Material Property Utility for Two-Dimensional Elements in Piecewise Linear 
Analysis ). 

3.4.63.1 Entry Point: PLAMAT. 

3.4.63.2 Purpose 

To perform the following matrix operation: 

[C] = [A]T [B] [A] . 

where [A] is equal to [U] (see the subroutine description for PREMAT and MAT, section 3.4.36.3, 
for a definition of [U] with INFLAG = 2), and [B] is equal to a previously calculated material 
properties matrix which is in common block /PLAGP/, The result [C], which is symmetric, is stored 
in common block /MAT0UT/, 

3.4.63.3 Calling Sequence 

CALL PLAMAT 

C0MM0N/PLAGP/GP(9),MIDGP,ELID 

C0MM0N/MATIN/MATID, INFLAG, ELTEMP,PLAARG,SINTH,C0STH 

C0MM(aN/MAT0UT/Gll,G12,G13,G22,G23,G33,DUMMY(14) 

where: 

/PLAGP/ 

GP(9) = 3x3 material properties matrix calculated in a PLA element driver - real - input. 

MIDGP = the material identification number associated with GP - integer - input. 

ELID = the element identification number associated with GP - integer - input. 
/mTIN/ 

HATID = the incoming material identification number - integer - input. 

ikflag\ 

ELTEMP>= not used by PLAflAT. 
PLAARG ) 

3.4-106 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

SINTH = Sine of the material property orientation angle - real - input. 

CfilSTH = Cosine of the material property orientation angle - real - input. 

/MAT(3UT/ 

Same as /MAT0UT/ with INFLAG = 2 as described in section 3.4.36.3 except only the first 
six cells are used. 

3.4.63.4 Method 

This routine checks to see if the incoming material identification number (MATID) is equal to 
the material identification number (MIDGP) which was used to calculate the material properties 
matrix stored in /PLAGP/. If they are not equal, this routine calls MAT with INFLAG = 2 and 
returns to the calling program. This will only happen in combination elements (TRIAl , TRIA2, 
QUADl , QUAD2) where there is a different material identification number used for the membrane and 
plate properties. If they are equal, then the matrix operation described above is performed. 



3.4-107 (12-1-69) 



SUBROUTINE DESCRIPTIONS 

3.4.64 IJPLT4 {virite a Plotter Command for Plotters 4 Through 7 ). 

3.4.64.1 Entry Point: !'JPLT4. 

3.4.64.2 Purpose 
To write plot commands for plotters 4 through 7. 

3.4.64.3 Calling Sequence 

CALL WPLT4 (A,0PT) 

CSi)MM0N/PLTDAT/ - see PLTDAT Miscellaneous Table description, section 2.5. 

where: 

a(1) = command type (0 = control, 2 = line, 4 = position) 

^ - integer, 

A(2-N) = additional data used to generate the plot commands (contents and( 

input, 
length, N, vary with conmand type) 



|0, if a plot command is to be generated I 

(l, if the current command buffer is to be terminated I 



0PT - V . integer, input. 



/PLTDAT/ 



PLTMDL = plotter model number - integer - input. 

PL0TER = plotter number - integer - input. 

PL0T = GIN0 file name of the plot tape to be written - BCD - input. 

3.4.64.4 ;1ethod 

The resulting plot command varies in length, depending both on the command type and the amount 
of necessary drum movement. If A(l ) = (control command), A(2) = number of control characters 
in the resulting command (one character expressed as a right adjusted integer in each word of the 
A array, starting in A(3)). 

If A(l) = 2 or 4 (line or positioning command), the resulting plot command will begin with the 
characters necessary to lower or raise the pen, respectively, unless the pen is already down or up, 
respectively. A(2) and A(3) contain the number of X and Y half steps necessary to draw the line 



3.4-108 (7/1/70) 



UTILITY SUBROUTINE DESCRIPTIONS 

(with the pen down or up), while A(4) and A(5) contain pointers to two character strings needed to 
draw the entire line except for the final half step. A(6) and A(7) contain the pointers needed to 
draw the last half step of the line only. The pointers in A(4 - 7) will cause drum movements as 
follows: 

1 = +Y 9 = +Y/2 17 = +X/2, +Y 

2 = +X, +Y 10 = +X/2, +Y/2 18 = -X, +Y/2 

3 = +X 11 = +X/2 19 = +X, -Y/2 

4 = +X, -Y 12 = +X/2, -Y/2 20 = +X/2, -Y 

5 = -Y 13 = -Y/2 21 = -X/2, -Y 

6 = -X, -Y 14 = -X/2, -Y/2 22 = -X, -Y/2 

7 = -X 15 = -X/2 23 = -X, +Y/2 

8 = -X, +Y 16 = -X/2, +Y/2 24 = -X/2, +Y 

The number of characters in a string is a function of the internal plotter model number, PLTMDL. 
If PLTMDL = 1, each string is three characters; if PLTMDL = 2 or 4, each string is tv/o characters; 
and if PLTMDL = 3 or 5, each string is only one character. 

As required, this subroutine will automatically initiate each plot tape record with the 
necessary "conditioning, synchronizing, and start plot" characters, and terminate each plot tape 
record with the necessary "stop plot" characters. 

3.4.64.5 Design Requirements 

The only incremental drum movements available for the CALCOMP drum plotter indicated as 
PLTMDL = 1 are the first eight (8) as listed above. Therefore, when A(l) = 2 or 4, the values in 
A(4 - 7) must be less than nine (9). 

Subroutine used: SWRITE. 



3.4-109 (7/1/70) 



SUBROUTINE DESCRIPTIONS 

3.4.65 WPLT9 (Write a Plotter Command for Plotter 9) . 

3.4.65.1 Entry Point: WPLT9. 

3.4.65.2 Purpose 

To write a plot command for plotter 9. 

3.4.65.3 Calling Sequence 

CALL WPLT9 (A,0PT) 

C9m9H/Pi^O^J/ - see PLTDAT Miscellaneous Table description, section 2.5. 

where: 

A = 10-character plot command (1 character per word, right justified, leading 
zeros) - integer - input. 

iO if A = plot command | 

/ integer - input. 
1 if a series of plot commands is to be terminated ) 

/PLTDAT/ 

PL0T = GIM0 file name of the plot tape to be written - BCD - input. 

3.4.65.4 Method 

If 0PT = 0, the 10 characters are written on the plot tape without any changes. If 0PT = 1 , 
two characters are appended to the current record: 

62g (EXIT code) and 61g (N0P code). 

3.4.65.5 Design Requirements 
Subroutine used: SWRITE. 



3.4-no (12-1-69) 



- integer - input. 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.66 WPLT1Q (Write a Plotter Coinmand for the NASTRAN General Purpose Plotter ), 

3.4.66.1 Entry Point: WPLTIO. 

3.4.66.2 Purpose 
To write the plotter commands for the NASTRAN general purpose plotter. 

3.4.66.3 Calling Sequence 

CALL WPLTIO (A,0PT) 

C0MMiaN/PLTDAT/ - see PLTDAT Miscellaneous Table description, section 2.5. 

where: 

A(l) = plot mode index 

A(2) = control index 

A(3) = x, = x-coordinate 

A(4) = y-i = y-coordinate 

A(5) = x„ = x-coordinate 

A(6) = Yp = y-coordinate 

(0 if A = plot command ) 

0PT =1 / - integer - input, 

(l if a series of plot commands is to be terminated) 

/PLTDAT/ 

EDGE = size of the borders (x,y) in plotter units - real - input. 

PL0T = GIN0 file name of the plot tape to be written - BCD - input. 

f'lAXCHR = plot tape buffer size (number of characters) - integer - input. 

3.4.66.4 Method 

Each plot command written is composed of 30 six-bit unsigned integers. The plot mode index, 
A(l), and the control index, A(2), are the first two integers. The next 20 integers represent 
the values in A(3-6). Each value is represented by five 6-bit integers, each integer being a 
decimal digit of the decimal representation of the value as follows: 

3.4-111 (12-1-69) 



SUBROUTINE DESCRIPTIONS 



where the original integer value is given by 

dQ.lO^ + d^.10^ + d2.10^ + d3.10^ + d^.lO° . 

This representation is used so as to make it easy to recover the original integer values on any 
binary computer. The last 8 characters are always zeros. 

The end result is a plot command of the following format: 

MCP^P3P2PiPQQ4Q3Q2QiqoR4R3R2'^l'^0^4^3^2^1^0°°°°°°°° 

where : 

M = plot mode index 

C = control index 

st 
P. = decimal digit of the 1 integer value 

Q. = decimal digit of the 2" integer value 

rd 
R^ = decimal digit of the 3 integer value 

S^ = decimal digit of the 4 integer value 

= zero 

When WPLTIO is called with 0PT = 1 , the current plot tape record is filled with as many dummy 
plot commands as is necessary to generate a fixed length record. The dummy plot command is made 
of 30 zeros. This is done so that the plot tape can be read in F0RTRAN without having to worry 
about variable length records as long as the plot tape buffer size (MAXCHR) is an integer multiple 
of the number of characters per word on the computer on which the plot tape is being read (see 
section 6.10.6 for further details). 

3.4.66.5 Design Requirements 

Subroutine used: SWRITE. 



3.4-112 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.67 PLTSET (Plotting Parameter Initialization) . 

3.4.67.1 Entry Point: PLTSET. 

3.4.67.2 Purpose 

Given the internal plotter and model numbers, to initialize the /XXPARM/ and /PLTDAT/ tables 
as needed by the NASTRAN plotter software package. 

3.4.67.3 Calling Sequence 

CALL PLTSET 

C0MM0N/XXPARM/ - see XXPARM Miscellaneous Table description, section 2.5. 

C0MM0N/PLTDAT/ - see PLTDAT Miscellaneous Table description, section 2.5. 

where: 

/XXPARM/ 

PBUFSZ = plot tape buffer size (number of words) - integer - output. 

PAPSIZ = size of the paper to be used (inches) - real - input. 
/PLTDAT/ 

M0DEL = internal plotter model number - integer - input. 

PL0TER = internal plotter number - integer - input. 

REG = plotting region parameters - real - output. 

AXYMAX = size of the paper (x.y) used, less the borders, in plotter units - real - output. 

XYEDGE = size of the borders (x.y) in plotter units - real - output. 

XYMAX = maximum useable x and y coordinate values on the plotter - real - output. 

CNTSIN = number of plotter counts per inch of paper - real - output. 

CNTCHR = number of plotter counts per character in the x and y directions - real - output. 

PLTYPE = plotter type - integer - output. 

PBFSIZ = plot tape buffer size (number of characters) - integer - output. 



3.4-113 (12-1-69) 



SUBROUTINE DESCRIPTIONS 

3.4,67,4 Method 

Using the internal plotter (PL0TER) and model (M0DEL) numbers, the initialization needed to 
properly use the NASTRAN plotting software is performed as follows: 

1. Section 2 of /PLTDAT/, of which XYMAX, CNTSIN, CNTCHR, PLTYPE and PBFSIZ are a part, is 
set to a duplicate of section PL0TER+2. 

2. PBUFSZ of /XXPARM/ is then set to PBFSIZ/CHRWRD where CHRWRD = number of characters per 
word on the subject computer, 

3. AXYMAX and XYEDGE are calculated based upon the plotter type and/or paper size. If the 
plotter is a table plotter (PLTYPE = +2 or -2), the borders are set up as 1/2 inch borders. 
If the plotter is not a table plotter and has no typing capability (PLTYPE = -1 or -3), 

the borders are set up as half the horizontal and vertical character sizes (CNTCHR/2), 
Otherwise, the borders are set to zero, 

4. The plotting region is then set to (0,0,AXYMAX(1) ,AXYMAX(2)) , This region can be sub- 
sequently altered by the module writer. 



3.4-114 (12-1-69) 



UTILITY SUBROUTmE DESCRIPTIONS 

3.4.68 DRWCHR (To Draw a Line of Characters) . 

3.4.68.1 Entry Point: DRWCHR. 

3.4.68.2 Purpose 

To draw a line of characters on a plotter, horizontally or vertically. 

3.4.68.3 Calling Sequence 

CALL DRWCllR (X,Y,XYD,CHR,NN,0PT) 

C0HM0H/PLTDAT/ - see PLTDAT Miscellaneous Table description, section 2.5. 

C0r'lM0N/CHRDRW/ - see CHRDRW Miscellaneous Table description, section 2.5. 

where: 

X,Y = starting or ending coordinate of the line of characters to be drawn (always left- to- 
right or top-to-bottom) - real - input. 

{+1 if X = starting or ending point of the line| 
> - integer - input. 
+2 if Y = starting or ending point of the line' 

CHR = indices of the line of characters to be drawn (see subroutine TiPE) - integer - 
input. 

M = number of the characters to be drawn - integer - input. 

-1 to initiate the line mode. 
0PT =^+1 to terminate a series of plot commands. ) - integer - input. 
to draw a line of characters. 

/PLTDAT/ 

REG = plot region parameters - real - input. 

XYilAX = size of the paper (x,y) used, less the borders, in plotter units - real - input. 

EDGE = size of the border (x,y) in plotter units - real - input. 

CNTCHR = number of plotter counts per character in the x and y directions - real - input. 
/CHRDRW/ 

LSTIND = index of the last character which can be drawn - integer - input. 

3.4-115 (12-1-69) 



SUBROUTINE DESCRIPTIONS 

CHRIND = indices into XYCHR used to locate the data needed to draw characters - integer 
- input. 

XYCHR = lines which must be drawn to produce alphanumeric characters - integer - input. 

3.4.68.4 Method 

If 0PT = 0, all other arguments are ignored and LINE is called. Otherwise, the characters 
are drawn. The width and height of each character position are assumed to be integer multiples 
of 8 and 16, respectively. The size of the drawn character will be this integer multiple of 6. 
The remaining space in each character position is used as the horizontal and vertical spacing. 
No character will be drawn outside the region specified in REG. 

3.4.68.5 Design Requirements 
Subroutine used: LINE. 



3.4-116 (12-1-69) 



UTILITY SUBROUTINE DESCRIPTIONS 

3.4.69 FNDPLT (Determine the Internal Plotter and Model Indices) . 

3.4.69.1 Entry Point: FNDPLT. 

3.4.69.2 Purpose 

Given the external name and model of a plotter, to determine the corresponding internal 
plotter and model numbers used by the NASTRAN plotting software package. 

3.4.69.3 Calling Sequence 

CALL FNDPLT (PLATER, M0DEL,PLTNAM,PM0DEL) 
where: 

PL0TER = internal plotter number - integer - output. 

i'I0DEL = internal model number - integer - output. 

PLTNAM(2) = external plotter name - BCD - input. 

PM0DEL(2) = external model name - integer or BCD - input and output. 

3.4.69.4 Method 

PLTNAM and PM0DEL are compared with an internal table of plotter names and models. When a 
match is found, PL0TER and M0DEL are set to the corresponding internal plotter and model numbers. 
If a match is found only for the plotter name (PLTNAM), the model name for the first model appro- 
priate to the matched model name will be used to determine PLjJTER and M0DEL, and the model name 
used will be stored in PH0DEL. If no match is found, PL0TER and M0DEL will be set to zero. See 
section 3.1 for further details. 



3.4-117 (12-1-69) 



MATRIX SUBROUTINE DESCRIPTIONS 

3.5 MATRIX SUBROUTINE DESCRIPTIONS. 

3.b.l BLDPK (Build a Packed Column of a Matrix ). 

3.5.1.1 Entry Points: BLDPK, BLDPKI, ZBLPKI, BLDPKN. 

3.5.1.2 Purpose 

To write a column of a matrix in NASTRAN packed format. 

3.5.1.3 Calling Sequence 

If several different matrices are to be packed concurrently, the multi-column version is 



used: 



CALL BLDPK{TYPIN,TYP0UT,NAME,BL0CK,0PT,1 ) 
CALL BLDPKI(A,I,NAME,BL0CK,0PT) 
CALL BLDPKN(NAME,BL0CK,0PT,MCB) 

where: 

BLDPK is an initialization call and is made once for each column to be packed. 
BLDPKI is the call made to supply a single element of the column to be packed. 
BLDPKN is a call to terminate processing of the column. 

TYPIN - Arithmetic type of the elements to be packed (1 = real single precision, 2 = real 
double precision, 3 = complex single precision, 4 = complex double precision)- integer - input. 
TYP0UT - Arithmetic type of the elements in the packed column - integer - input. 

'0PT = 'WRITE': GIN0 file name of data block where packed column will be written. 



NAME - , 

^5IPT = 'WRTC0R': An array in core where packed column will be written. 

BLCICK - An array of dimension a 6 for use by BLDPK and BLDPKI. 

'WRITE': The packed column will be written by GIN0. ) i»»„* 
'WRTC0R': The packed column will be written in core, j ^"^""""^^"^ "^"^ 

A - An array of dimension 1, 2 or 4 (depending on TYPIN) where the element to be packed is 
stored - real - input. 

I - Row position of element to be packed - integer - input. 

HCB - An array of dimension 7 where the trailer information about the matrix is accumulated. 

If only one matrix is being packed, the single column version should be used as it is more 
efficient. 

C0MM0N/ZBLPKX/A(4),I 

3.5-1 



SUBROUTINE DESCRIPTIONS 



CALL BLDPK(TYPIN,TYP0UT,NAME,O, 0PT,O) 

CALL ZBLPKI 

CALL BLDPKN(NAME,O,0PT,MCB) 

where: 

BLDPK and its arguments are as defined above. 

ZBLPKI is the call made to provide an element of the column to be packed. The element (A), 
and its row position (I), are stored in /ZBLPKX/ by the user prior to each CALL ZBLPKI. 
BLDPKN and its parameters are defined as above. 

Note: 

BLDPKN accumulates the following two words of MOB: 

MCB(2) = column number 

MCB(6) = number of words in the densest column 

In the multi-column version, BL0CK must be different for each matrix being oacked. 

3.5.1.4 Method 

Format of a packed column (one logical record): 



Row 


position of 


first non- 


zero element 


Type 


of elements 


= TYP0UT 




Not 


used 






Not 


used 






Not 


used 






First non-zero € 


lement 




Row 


position of 


second non 


-zero element 




or second 


non-zero element 


Last 


non-zero element 




16777215 (intege 


r) = 24 "V 


bits 



' Column header 



Column body 



■Column trailer 



3.5-2 



MATRIX SUBROUTINE DESCRIPTIONS 

Example: 

Assume a column of a real single precision 19xN matrix is to be packed in real single 
precision form: 



Row Position 


Value 


Packed Format 


1 


0.0 


4 


2 


0.0 


1 


3 


0.0 


Not used 


4 


1 .0 


Not used 


5 


2.0 


Not used 


6 


0.0 


1.0 


7 


3.0 


2.0 


8 


4.0 


7 


9 


5.0 


3.0 


10 


5.0 


4.0 


11 


7.0 


5.0 


12 


8.0 


5.0 


13 


0.0 


7.0 


14 


0.0 


8.0 


15 


0.0 


15777215 


15 


0,0 




17 


0.0 




18 


0.0 




19 


0.0 





For each of the 15 possible combinations of TYPIN and TYPjJUT, BLDPK sets switches for the 
type of conversion to be used in packing. For the multi-column version, these switches and 
other pointers are saved in BL0CK. BLDPKI restores the switches and oointers and moves the 
element and its row position to /ZBLPKX/ then enters code common with ZBLPKI. If the element 
is zero, an immediate return is given. If the element is the first non-zero element for the 
column, the 5-word header is written followed by the element. Otherwise, the row position of 
the current element is compared to the row position of the last element. If the difference is 
unequal to one, the current row position is written. In either case, the non-zero element is 
written and return is made. 



3.5-3 



SUBROUTINE DESCRIPTIONS 

3.5.1.5 Design Requirements 

Let I. and I .^i be the rows positions of two elements supplied in successive calls to 
BLDPKI or ZBLPKI. Then I.^^ =- I. for all 1 of a column. 

If 0PT = 'WRTC0R', then the block NAME must be initialized prior to each call to RLDPK 
(see 0PNC0R). 

If the single column version is used, subroutine PACK may not be called between calls to 
BLDPK and BLDPKN. 

MCB{2) and MCB(6) must be set to zero by the user prior to the first call of BLDPKN for 
a matrix. 



3.5-4 



MATRIX SUBROUTINE DESCRIPTIONS 

3.5.2 PACK (Pack a Column of a Matrix) . 

3.5.2.1 Entry Point: PACK. 

3.5.2.2 Purpose 

To pack and write a column of a matrix. 

3.5.2.3 Calling Sequence 
C0MM0N/PACKX/TYPIN,TYP0UT,I,N.INCR 
CALL PACK(A,NAME,0PT,MCB) 

A - An array where the elements of the column are stored in unpacked form. 

l0PT = 'WRITE', GIN0 name of the data block where the packed column will be 
NAME - ^written. 

(0PT = 'WRTC0R', an array in core where the packed column will be stored. 



0PT 



jWRITE: Packed column will be written by GIN!3. ) ^ ^^ 

(WRTC0R: Packed column will be stored in core at NAME.) Subroutine name 



MCB - An array of dimension = 7 where the matrix trailer information will be 
accumulated. 

TYPIN - Arithmetic type of the elements of the column stored at A (1 = real single 
precision, 2 = real double precision, 3 = complex single precision, 4 = com- 
plex double precision). 

TYP0UT - Arithmetic type in which the elements are to be in packed form. Same conven- 
tion as TYPIN. 

I - Row position of the element stored at A(l). 

N - Row position of the last element in the column stored at A. 

INCR - Spacing of the elements in column stored at A in units of elements, e.g., if 
real double precision elements are stored consecutively, INCR = 1. 

3.5.2.4 Method 

BLDPK is called to initiate activity for the column. For each element in the column, Z^^LPKI 
is called to perform packing and writing. BLDPKN is called to terminate activity for the column 
and update the matrix trailer. 



3.5-5 



SUBROUTINE DESCRIPTIONS 

3.5.2.5 Design Requirements 

See subroutine description for BLDPK, section 3.5.1. 



3.5-6 



MATRIX SUBROUTINE DESCRIPTIONS 

3.5.3 INTPK (Interpret a Packed Column of a Matrix ). 

3.5.3.1 Entry Points: INTPK, INTPKI, ZNTPKI. 

3.5.3.2 Purpose 

To read and interpret a column of a matrix in NASTRAN packed format. 

3.5.3.3 Calling Sequence 

If several different matrices are to be read and interpreted concurrently, the multi-column 
version is used. 

CALL INTPK($n,NAME,BL0CK,0PT,TYP(2!UT,l) 

CALL INTPKI{A,I,NAME,BL!3CK,!3PT,E0L) 

where INTPK is the initialization call and is made once for each column to be read and 
interpreted. 

INTPKI is the call made to read successive non-zero elements of the column. Each call to 
INTPKI returns one non-zero element. 

n - F0RTRAN statement number defining return to be taken in the event the column is null. 

(0PT = 'READ', GIN0 file name of data block where the matrix is storeJ. 



NAME 

(OPT = 'RDCfJR', as array of core storage where the matrix is stored. 

BL0CK - An array of dimension £ 6 for use by INTPK and INTPKI. 

('READ' - The column will be read by GIN0. ) i 4. 

('RDC0R' - The column will be read from core storage.) Subroutine name 

TYPfJUT - Arithmetic type into which the elements are to be unpacked (+1 = real single 

precision, +^2 = real double precision, +3 = complex single precision, +4 = complex 
double precision). If TYP0UT -= 0, the sign of each non-zero element is to be 
changed - integer - input. 

A - An array of dimension 1, 2 or 4, depending on TYP0UT, where the non-zero element is to be 
stored - real - output. 

I - Row position of the non-zero element - integer - output. 

E0L = 1 indicates last non-zero element in the column was read on the current call to 
INTPKI, =0 otherwise - integer - output. 

3.5-7 



SUBRO'JTINE DESCRIPTIONS 

If only one matrix is to be read and interpreted, the single-column version should be used 
as it is more efficient. 

C0MM0N/ZNTPKX/A{4),I,E0L,E0R 

CALL INTPK($n,NAME,O,0PT,TYP(3UT.O) 

CALL ZNTPKI 

where INTPK and its arguments are defined as above. 

ZNTPKI is the call made to read successive non-zero elements of the column. One element (A), 
its row position (I), end-of-column indicator (ES3L), and end-of-record indicator (E0R) are stored 
in /ZNTPKX/ for each call to ZNTPKI. 

EfJL is defined as above. 

E0R = 1 indicates the end-of-record has been read by ZNTPKI, = otherwise (ZNTPKI buffers 
ahead so that E0R will usually be one before E0L is one. E0R is always one when E0L = 1). 

3.5.3.4 Method 

INTPK reads the 5-word line header for the column. If 0PT exits via RETURN 2, a null column 
exists and RETURN lis made to the user. Otherwise, for each of the 32 combinations of TYP0UT and 
the type of the elements in the column, a switch for pickup and conversion of the elements is set. 
For the multi-column version, this switch and other pointers are stored in BL0CK. For the sinole 
column version, one buffer is read into /DESCRP/. INTPKI restores the switch and pointers and 
then enters code common with ZNTPKI. A test is made to determine if a read is necessary (this 
is almost always required in tlie multi-column version since only one element at a time is read). 
The non-zero element is picked up from /DESCRP/, converted if necessary, and stored in /ZNTPKX/, 
Its row position is stored in /ZNTPKX/. The next word in the column is now tested (a read being 
given first if necessary). If the (integer) absolute value of this number is less than 16777215, 
the number is the row position of the next non-zero element. If = 15777215, it is the trailer 
word and the last non-zero element has been read. In this case E0L is set to 1 . If ^ 15777215, 
the number is a real number and the row position of the next non-zero element equals the current 
row position plus one. For the multi-column version, A, I and E0L are moved from /ZNTPKX/ to 
the user, and the parameters are saved in BL0CK. 



3.5-8 



MATRIX SUBROUTINE DESCRIPTIONS 



3.5.3.5 Design Requirements 



1. If 8IPT = RDCJIR, the calling module must initialize NAME prior to each call to INTPK see 
j)PNC0R (section 3.4.13). 

2. If the single column version is used, subroutine UNPACK must not be called during 
interpretation of a column, i.e., subsequent to a call to INTPK and prior to a return from ZNTPKI 
with E0L = 1. 

3. The format of floating point words on computers which execute this program must be such 
that any non-zero floating point word is larger in absolute value than the integer 16777215. 

4. When using the single column version, if the user does not complete interpretation of 
the column, he must insure that the remainder of the column is skipped. This may be accomplished 
by 

IF (E0R.Eq.O) CALL FWDREC($n,NAME) . 

5. The first word of /DESCRP/ must contain the length of /DESCRP/. 

3.5.3.6 Diagnostic Messages 

The following messages may be issued by INTPK: 
3002 
3003 



3.5-9 



SUBROUTINE DESCRIPTIOfiS 

3.5.4 UNPACK (Unpack a Packed Column of a Matrix ) . 

3.5.4.1 Entry Point: UNPACK. 

3.5.4.2 Purpose 

To read and unpack a column of a matrix stored in NASTRAN packed format. 

3.5.4.3 Calling Sequence 
CALL UNPACK($n.NAME,A,0PT) 
C(i)Mrt0N/UNPAKX/TYP8IUT , I ,N , INCR 

n - F0RTRAN statement number defining return to be taken if the column is null. 

(0PT = 'READ', GIN0 name of data block containing the column to be unnacked. 
NAME 



0PT 



0PT = 'RDC0R', an array where the packed column is stored. 
('READ' - column will be read by GIN0. 



Subroutine name 
i'RDClilR' - column will be read from core at NAME. 



A - An array where the unpacked column will be stored. 

TYP0UT - Arithmetic type in which the elements are to be stored at A (1 = real single 

precision, 2 = real double precision, 3 = complex single precision, 4 = complex 
double precision). TYP0UT ^ means that each of the elements will be stored 
with a change of sign. 

I - Row position of the element to be stored at A{1). 

N - Row position of the last element to be stored at A. 

INCR - Spacing of the elements to be stored at A in units of elements, i.e., if 

complex single precision elements are to be stored at A(l), A(5), A(7), etc., 
INCR = 2. 

1. Zeros are stored for zero elements. 

2. If I i or N « 0, the column is unpacked from the first non-zero element throuqh 
the last non-zero element and I and N are set to these row positions. 

3. If return to statement n is given, zeros are ncrt stored at A. 

3.5-10 



Notes : 



MATRIX SUBROUTINE DESCRIPTIONS 

3.5.4.4 Method 

Activity for the column is initiated by a call to INTPK. A non-standard return from INTPK 
results in an immediate RETURN 1 to the user. ZNTPKI is called to obtain the first non-zero 
element. If its row position is less than I, ZNTPKI is repeatedly called until a row position * I 
or end-of-column is found. If the row position of the first non-zero element is greater than I, 
zeros are stored for the missing elements. Each non-zero element whose row nosition is less than 
or equal to N is stored and zeros are stored for missinn elements. Non-zero elements whose row 
positions are greater than N are skipped until the end-of-column is reached. 

3.5.4.5 Design Requirements 

See subroutine INTPK (see section 3.5.3). 

3.5.4.6 Diagnostic Messages 

In a coding sense messages 3002 and 3003 are possible. However, they violate the design of 
GIN0 or 0PNC0R and therefore, if obtained, should indicate an obscure program design error or 
machine error. 



3.5-11 



SUBROUTINE DESCRIPTIONS 

3.5.5 CALCV (Compute a Partitioning Vector ). 

3.5.5.1 Entry Point: CALCV. 

3.5.5.2 Purpose 

To build a partitioning vector of zeros, ones and twos to be used by subroutines MERGE 
and PARTN. 

3.5.5.3 Calling Sequence 

CALL CALCV(FILEP.SET1 .SUBO.SUBl ,C0RE) 

FILER - GIN0 file number of partitioning vector - integer - Input. 
SETl - Bit position of major set - integer - input. 
SUBO - Bit position of zero subset - integer - input. 
SUBl - Bit position of one subset - integer - input. 
C0RE - Open core. 

C0MIW/PATX/LC(3RE,NSUBO,NSUB1,NSUB2,FUSET 

LC0RE - Length of open core - integer - input. 

NSUBO - Number of rows in zero subset - integer - output. 

NSUBl - Number of rows in one subset - integer - output. 

NSUB2 - Number of rows in two subset (not in one or zero subset) - integer - output. 

FUSET - File name of USET - integer - input. 

3.5.5.4 Method 

Each element of USET is examined and classified. If it belongs to SETl it is further 
classified into SUBO, SUBl, and SUB2. 

A vector is constructed which has zeros, ones and twos in order as elements of USET are so 
classified. 

3.5.5.5 Design Requirements 

LC0RE must be - twice length of GIN0 buffer. 

3.5.5.6 Diagnostic Messages 

System messages if USET or FILEP are not correct GIN0 files. 



3.5-12 



MATRIX SUBROUTINE DESCRIPTIONS 
3 . J . 6 PARTN - MERGE (Partition a Matrix - Merge Matrides Together ) . 

3.5.6.1 Entry Point: PARTM, MERGE. PARTN and MERGE are two distinct routines but are so 
closely related that they are described together here, 

3.5.5.2 Purpose 

PARTN will break up a matrix into four submatrices. 



[A] 



All ] Ai2 
I 



MERGE is the inverse of PARTN in that given the four buildina blocks An A22 MERGE 

will reconstruct [A]. 

3.5.6.3 Calling Sequence 

CALL PARTN (RP,CP,Z) 

CALL MERGE (RP.CP.Z) 

RP - Matrix control block of the row partitioning vector - integer - input. 

CP - Matrix control block of the column partitioning vector - integer - input. 

Z - Array of open core. 

If RP(1) £ 0, or CP(1) 5 0, the core locations from RP{8) or CP{8) will contain this 
vector in packed form. 

If RP(1) = CP{1) < the arrays RP and CP coincide in core. 
C0MM0N/PARMEG/MCBA(7) .MCBAll (7) ,MCBA21 (7) ,MCBA12(7) ,MCBA22(7) .LC0RE.RULE 

MCBA - Matrix control block for LA] - input. 

MC3A11 - Matrix control block for [All] - input. 

MC3A21 - Matrix control block for [A21] - input. 

MC3A12 - Matrix control block for [A12] - input. 

MCBA22 - Matrix control block for [A22] - input. 

If any submatrix is not desired or does not exist set MCBAij(l) = 0. 

LCfiIRE - Length of Z array - integer - input. 

RULE - Rule to be applied to the row and column partitioning vectors - integer - innut. 

3,5-13 



SUBROUTINE DESCRIPTIONS 

3.5.G.4 Method 

Each element of [A] is assigned to the appropriate submatrix by the followinq schemes. 
RULE > N = I RULE I 

a. . e [All] if RP(I) = CP(J) = M 
a. . e [A21] if RP(I) = N, CP(J) f N 
a. . £ [A12] if RP(I) f N, CP(J) = N 
a. . e [A22] if RP(I) f N, CP(J) / N 
RULE -i N = I RULE I 

a. . e [An] if RP(I) 2 N, CP(J) * N 
a. . £ [A21] if RP(I) = N, CP{J) - N 
a. . e [A12] if RP(I) * N, CP{J) z N 
a. . e [A22] if RP(I) * N, CP(J) < N 
Subroutine RULER (RULE, IP, ZC!3NT,0NCMT, LIST, NR0HP, BUFF, I0PT) is called twice to accomnlish 
this assignment where 

RULE - Rule tc be applied 

IP - Either RP or CP 

ZCONT - Number of elements (rovM or column) assigned to the one class. 

0NCNT - Number of elements (row or column) assigned tc the two class. 

For example, if RULER is analyzing RP and RP(I) = N this element of RP is said to belong to 
the 1 class in that it will go either to [All] or [A21]. 

LIST - A list of zeros and ones. Zero, if the element belongs to the one class. 
One, if the element belongs to the two class. 

NR0WP - Number of rows in IP 

BUFF - One GIN0 buffer space 

I0PT - If I0PT = 1, LIST will be stored 1 number per word. If I0PT = 0, LIST will be 
packed 32 bits/word. 
Non-zero elements are read, classified and output. 

3.5-14 



MATRIX SUBROUTINE DESCRIPTIONS 

3.5.6.5 Design Requirements 

Open core must contain n GIN0 buffers + 1 column (single precision) of [A] and 1 row/32 of 
[A], where n = the number of submatrices present plus one. 

3.5.6.6 Diagnostic Messages 

If insufficient core is available as described above, fatal message 3008 is given. 



3.5-15 



SUBROUTINE DESCRIPTIONS 

3.5.7 SSG2A (Driver for PARTN ) . 

3.5.7.1 Entry Point: SSG2A. 

3.3.7.2 Purpose 

To partition a vector into two subsets (i.e., to be a driver for PARTN). 

3.5.7.3 Calling Sequence 

CALL SSG2A(VECTi3R, PARTI ,PART2,PVECT) 

VECT0R - GIN0 file number of vector to be partitioned - integer - input. 

PARTI - GIN0 file number of major oartition - integer - input, 

PART2 - GIN0 file number of minor partition - integer - input. 

PVECT - GIN0 file number of partitioning vector - inteqer - input. 
C0MM0N/PATX/XXX,NR0W1 ,NR0W2 

NR8IW1 - Number of rows in PARTI - integer - input. 

NR8rW2 - Number of rows in PART2 - integer - input. 

3.5.7.4 Method 

The PARTN common block is filled. 

Based on the trailer of VECT0R and tiR0Wl , NR0W2: 

{vector}^ {IS 

3.5.7.5 Design Requirements 

Open core is needed at /SSGA2/. 



3.5-16 



MATRIX SUBROUTINE DESCRIPTIONS 

3,5.8 SDR1B (Driver for MERGE ). 

3.5.8.1 Entry Point: SDRIB 

3.5.8.2 Purpose 

To drive MERGE forming VECT0R 

Ucm] - {mix 

^ ' ^ PART2 ' 

3.5.8.3 Calling Sequence 

CALL SDR1B(PVECT,PART1 ,PART2,VECT0R,MAJ0R,SUBO,SUB1 ,USET.I0PT,IYS) 

PVECT - GIN0 name of partition vector - integer - input. 

PARTI - GIN|3 name of vector which corresponds to SUBO set - inteqer - innut. 

PART2 - GIN0 name of vector which corresponds to SUBl set - integer - inout 

VECT0R - GIN0 name of merged vector - integer - input. 

MAJ0R - Bit position of set of VECT0R - integer - input. 

SUBO - Bit position of set of PARTI - integer - input. 

SUBl - Bit position of set of PART2 - integer - input. 

USET - GIN0 name of USET - integer - input. 

I0PT - '0' I 

) These are used in a module specific call to 

) handle the YS data block in a special manner. 
lYS - '0' [ 

3.5.8.4 Method 

CALCV is called to obtain partitioning vector. 
PARMEG common block is filled. 
MERGE is called. 

3.5.8.5 Design Requirements 
Open core at /SDRBl/. 



3.5-17 



SUBROUTINE DESCRIPTIONS 

3.5.9 UPART (Symmetric Partition Driver ) . 

3.5.9.1 Entry Points: UPART, MPART 

3.5.9.2 Purpose 

To compute a partitioning vector and then perform a series of symmetric partitions. A 
symmetric partition is such that the row partitionino vector equals the column partitioning vector. 

For example: 



t^n^ 



^ff 



^sf 



^fs 



Ss 



3.5.9.3 Calling Sequence 

CALL UPART(USET.SCR1 ,MAJ0R,SUBO,SU31 ) 

USET - GIN0 file number of USET - integer - input. 

SCRl - Scratch file on which the partitioning vector will be written - integer - input. 

MAJ0R - Bit position within a USET word of the super set (e.g., n set in the above 
example) - integer - input. 

SUBO - Bit position of the first subset (e.g., f set in the above example) - integer - 
input. 

SUBl - Bit position of the second subset (e.g., s set in the above example) - integer - 
input. 

CALL MPART(KNN,KFF,KSF,KFS,KSS) 

KNN - GIN?) name of the matrix to partitioned - inteoer - inout. 

KFF,KSF,KFS,KSS - GIN0 names of the nartition cutouts. A zero will cause the respective 
matrix not to be written. 

3.5.9.4 Method 

A call to UPART causes CALCV to compute a partitioning vector. 

MPART drives PARTN and is called repeatedly to partition several matrices (i.e. KNN, MNN, 
3NN, M'AH) in a similar symmetric manner using the same partitioning vector. 

3.5.9.5 Design Requirements 
Open core at /UPARTX/. 



3.5-li 



MATRIX SUBROUTIME DESCRIPTIONS 

3.5.10 ADD (Matrix Addition Routine) . 

3.5.10.1 Entry Point: ADD. 

3.5.10.2 Purpose 

To compute [C] = a[A] + 0[B] or on option [C] = a[A]. 

3.5.10.3 Calling Sequence 
CALL ADD (Z) 

Z -- Array of core 

C0MM0N/ADDX/MCBA(7),MCBB(7),MCBC(7),TYPA,ALPHA(4),LC0RE,TYPB,BETA(4) 

MCBA - Matrix Control Block for [A] - input. 
MCBB - Matrix Control Block for [B] - input. 
MCBC - Matrix Control Block for [C] - input. 
TYPA - Type of Alpha - integer - input. 

1 - real single precision 

2 - real double precision 

3 - complex single precision 

4 - complex double precision 

ALPHA - a - input - type depends on TYPA. 
LCjJRE - Length of Z array. 
TYPB - Type of BETA - integer - input. 
BETA - e - input - type depends on TYPB. 

3.5.10.4 Method 

The type of arithmetic is determined to be the maximum type of [A], [B], [C], a, 
The non-zero terms of [A] and [B] are processed into [C]. 
If MCBB(l) = 0, a[A] will be computed. 

3.5.10.5 Design Requirements 

Z must be at least three GIN0 buffers long. 
If a[A] only is to be computed, MCBB(l) = 0. 



3.5-19 



SUBROUTINE DESCRIPTIONS 

3.5.11 SSG2C (Driver for ADD ). 

3.5.11.1 Entry Point: SSG2C. 

3.5.11.2 Purpose 

To drive ADD to compute [C] = a[A] + B[B]. 

3.5.11.3 Calling Sequence 

CALL SSG2C (FILEA,FILEB,FILEC,I0P,BL0CK) 

FILEA - GIN0 file number of [A] - integer - input. 

FILE3 - GIN0 file number of [B] - integer - input. 

FILEC - GIN0 file number of [C] - integer - input. 

I0P - Option flag - integer - input. 

IF I0P < the first column of [A] v/ill be added to each column of [B] to 
give [C]. 



BL0CK - 


■ 11 -word array 


containing coeffi 


cie 


nts - input. 




Word 


Type 




Meaninq 




1 


Integer 




Type of a 




2 


Real 




a 




3 






a 




4 






a 




5 






a 




6 






Not used 




7 


Integer 




Type of S 




8 


Real 




8 




9 






S 




10 






B 




11 






B 



3.5-20 



I^IATRIX SUBROUTINE DESCRIPTIONS 

3.5.11.4 Method 

The trailers of FILEA and FILEB and BL0CK are used to fill the ADDX common block. 
The type of FILEC is the minimum type compatible with a[A] and 6[B]. 

3.5.11.5 Design Requirements 
Open core at /SSGC2/. 



3.5-21 



SUBROUTINE DESCRIPTIONS 

3.3.12 HPYAD (ilatrix Multiplication Routine ) . 
3. b. 12.1 Entry Point: MPYAD. 

3.5.12.2 Purpose 

To evaluate the matrix equation 

D = + [A] [Q] + [C] or D = + [A]""" [B] + [C]. 

3.5.12.3 Calling Sequence 
CALL MPYAD(Z,Z,Z) 
C0MM0N/MPYADX/A(7),B(7),C(7),D(7),NZ,T,SIGNAS,SIGNC,PREC,SCR 

Z - An area of working storage. 

NZ - The number of computer words at Z. 

A,B,C - Matrix control blocks for the matrices A, B, C. 

If C{1) = 0, C is not used, i.e. [D] = + [A] [B] or + [a'''] [B]. 

D - Matrix control block for the product matrix. 

D(l) must contain the GIN0 file name prior to entry. 

D(5) must contain the arithmetic type of the elements of D. MPYAD will accumulate 

D(2), D(C) and set 0(7) = 0. 

(= 0, + [A] [B] + [C] is computed. 

T { T 

(?* 0, 1 [A] [B] + [C] is computed. ^' 

(+1, compute +[A] [B] or +[A]"'^ [3] 
SIGNAB = 

(-1, compute -[/] [3] or -[A]' [B] 

(+1 , use + C 
SIGNC = < 

(-1 , use - C 

Note: If C(l) = 0, SIGUC is ignored. 

(l , perform arithmetic in single precision 



PREC 

(2, perform arithmetic in double precision 

SCR = GIN0 file name of a scratch file for use by MPYAD. 



3.5-22 



MATRIX SUBROUTINE DESCRIPTIONS 

3.5.12.4 Method 

1. General Comments. Two alternative methods of performing the matrix multiplication are 
available in MPYAD. Method One holds as many unpacked columns of the B and D matrices as core 
storage will allow. The A matrix is read interpreti vely by INTPK. For each non-zero element in 
A, all combinatorial terms for columns of B currently in core are computed and accumulated in the 
storage for D. At the completion of one pass of the A matrix, the matrix product is complete to 
the extent of the number of columns of B currently in core. (If the C matrix is present, columns 
are initially unpacked into the storage for D.) The process is repeated until the B matrix is 
exhausted. One GIN0 buffer only is required for Method One. The number of passes of the A 
matrix for Method One equals the number of columns of B divided by the number of columns of B and 
D which can be held in core at one time. In Method Two one column of B is held in core at one 
time in packed form (i.e., non-zero terms and row positions only) and either one column o^ D in 
unpacked form (T = 0) or one element of D (T = 1 ) . The remaininn storaqe is allocated to 
storage of columns of A in packed form (as described above). For all the columns of A in 
storage at one time the B and E matrices are passed, column by column, forming partial answers 

on each pass. The E matrix is initially the C matrix (if present) and thereafter is the partial 
product matrix from the previous pass. Three GIN0 buffers are required for Method Two. It may 
be seen that the A matrix is passed once and the number of passes of the B and E matrices equals 
the number of columns of A divided by number of columns of A that may be held in core at one time. 

2. Initialization Phase. The arithmetic type of the elements of D is determined as a 
function of the types of A, B and C and the precision requested by the user. Various Dointers 
for both Methods One and Two are computed. A determination of sufficient core storage is made (one 
unpacked column of B plus one unpacked column of D plus one GIW buffer). Switches are set for 
the type of arithmetic to be performed and the pickup and conversion of elements of B. If the 
number of passes for Method One is less than 4, Method One is selected. Otherwise the A matrix 

is read interpretively once by INTPK, and allocation of storage for Method Two is determined. If 
the number of passes for Method Two is less than the number for Method One, Method Tv;o is selected. 
Otherwise Method One is used. 



3.5-23 



SUBROUTINE DESCRIPTIONS 



3. Method One. The allocation of core storage for Method One is shown below: 



JZB or JZDB- 



NZZ- 
NZ 



^21 



'nl 



'12 
^22 



'n2 



'Ir 
^2r 



nr 



^11 
'21 



■'ml 



^12 
'22 



\2 



Hr 
'2r 



mr 



GIN0 buffer 



1st column of D (ND words) 



2nd column of D 



J.L. 

r column of D 



'1st column of B (NB words) 



' 2nd column of B 



th 
r column of B 



3.5-24 



IWRIX SUBROUTINE DESCRIPTIONS 

Columns of B and C are read and unpacked by UNPACK. INTPK is called to initiate reading and 
interpreting the S,th column of A (x. = 1 initially). For each non-zero term in A, a., or a . 
depending on T, the following arithmetic computations are made: 

T = 0= dij = ^ii^j ' ^ij 
T ;^ 0: d,j = a,, b.. . d,j 

where j runs across the columns of B and D currently in core. At the conclusion of a oass of the 
A matrix, the columns of D in core are packed and written by PACK. The orocess is repeated until 
the multiplication is complete. 

4. Method Two. The allocation of core storage for Method Two is shown on the next page. 



3.5-25 



SUBROUTINE DESCRIPTIONS 



1 






^2 
^i,l 






■ 






rtn' — rr ^ 


Pointer to (r+l)st column of A 
Pointer to r column of A 

Pointer to 2nd column of A 
Pointer to 1st column of A = AC0RE 


riKbTL ■- * 


nrnnr » 


16777215 




^ 


GIN0 buffer 


BUF3 * 




GIN0 buffer 


liUi c ■* 


BUFl = NZZ ► 

NZ ► 


GIN0 buffer 



.th 



q column of D (ND words) 



non-zero elements 
in 1st column of A 



non-zero elements 
in rth column of A 



Pointers to columns of A 
in core stored backward 
(oointer to (r+l)st column 
delimits end of r*" column) 



>non-zero elements 
in qtii column of B 



Note: Allocation for case T = 1 is same except that AC0RE = 1. Consequently, additional 
columns of A may be held in storage on each pass. 



3.5-26 



MATRIX SUBROUTINE DESCRIPTIONS 

To begin each pass, as many columns of A that can be held in core are stored in packed form 
using INTPK. Pointers to the beginning of each column are kept. For each column of B the 
following sequence occurs: 

1. BLDPK is called to initiate packinq of a column of D. 

2. The column of B is stored in packed form at BC0RE using INTPK (if column is null, the 
corresponding C column is copied to D) . The transoose flaq is tested. 

3. 1 f 0: for each non-zero term in A in the p row d,=a b.+d.is formed. 

"^ ok pq qk pk 

When the row of A is complete, ZBLPKI is called. When all rows of A are complete, 
BLDPKN is called. 

4. T = 0: the corresponding column of C is read and unpacked by UNPACK. Then, for each 
non-zero term in A in the p column, d, = a. b + d, , is computed. When all 
columns of A in core are complete, the column of D is packed and written by PACK. 

5. When all columns of B and C are complete, a test for completion of the multiplication 
is made. 

6. If incomplete, the C and D files are switched and the orocess described above is 
repeated. 

3.5.12.5 Design Requirements 

Core storage must be sufficient to hold one unpacked column of B olus one unpacked column of 
D plus one GIN?) buffer. 

The matrices to be multiplied (and added) must have compatible dimensions. MPYAD does not 
check this. 

3.5.12.5 Information Messages 

Q^NMSG is called at entry and at exit from MPYAD. Consequently, the line xxxxx MPYAD will 
appear twice for each call to MPYAD (where xxxxx = time in seconds). The difference is the 
execution time for MPYAD. 



2073 MPYAD METH0D ={2} . N0. 0F PASSES 



This message gives the method selected and number of nasses required. 



3.5-27 



SUBROUTINE DESCRIPTIONS 

2102 LEFT-HAND MATRIX R0W P!3SITI0N 0UT 0F RANGE - IGN0RED. 

A term in the A matrix whose row position is larger than the stated dimension was 
detected and ignored. 

3.5.12.7 Diagnostic Messages 

The following messages may be issued by MPYAD: 
3001 
3002 
3008 



3.5-28 



MATRIX SUBROUTINE DESCRIPTIONS 

3.5.13 SSG2B (Driver for MPYAD ) . 

3.5.13.1 Entry Point: SSG2B. 

3.5.13.2 Purpose 

To drive MPYAD to compute 

[D] = 1 [A] [B] 1 [C] 
or 

[D] = + [Af [S] + [C] 

3.5.13.3 Calling Sequence 

CALL SSG2B(FILEA,FILEB,FILEC, FILED, T.PREC.ISIGN.SCRl) 

FILEA - GIN0 name of [A] - integer - input. 

FILEB - GIN0 name of [B] - integer - input. 

FILEC - GIN0 name of [C] - integer - input. 

FILED - GIN0 name of [D] - integer - inout. 

T - Transpose flag - integer - input. 
T = implies use [A] 
T = 1 implies use [A] 

PREC - Precision of computation - integer - input. 1 = real single precision, 

2 = real double precision, 3 = complex single precision, 4 - complex double 
precision. 

ISIGN - Sign of products - integer - input. 

, (sign [A3] = sign (ISIGN) 
ISIGN = + 1 =>{ ^ ' ' 

(sign [C] = sign (ISIGN) 

I ISIGN I >1 => + [AB] - [C] 
I ISIGN I < 1 =>- [AB] + [C] 

SCRl - GIN0 scratch file - integer - input. 

3.5.13.4 Method 

SSG23 fills /MPYADX/ and calls MPYAD to comnute [D] in above equation. 

3.5.13.5 Design Requirements 
Open core at /SSGB2/. 

3.5-29 



SUBROUTINE DESCRIPTIONS 

3.5.14 SDCgHP (Syimietnc Decomposition ). 

3.5.14.1 Entry Point: SDC0MP. 

3.5.14.2 Purpose 

To decompose a real symmetric matrix [A] into the form [A] = [L] [D] [L]^ where [L] is a 
unit lower triangular matrix and [D] a diagonal matrix stored in place of the unit elements on 
the diagonal of [L]. On option, the Cholesky decomposition [A] = [C] [C]^ is done for a real, 
positive definite matrix, with only the lower triangle [C] beino output. SDC!2MP will also comnute 
the determinant of [A]. 

3.5.14.3 Calling Sequence 
CALL SDC(i)MP($ni,Z,Z,Z) 
C0MM(3N/SFACT/A(7),L(7),C(7).SCR1,SCR2,NZ,DET,P(JWER,CHLSKY 

A(7) - Matrix control block for [A]. 

L(7) - Matrix control block for [L]. 

C{7) - Matrix control block for [L] or [C]. 

SCRl, SCR2 - Two scratch files. 

NZ - The number of computer words at Z. 

DET - Double precision cell where the scaled value of the determinant of [A] will 
be stored. 

PJIWER - Scale factor to be applied to DET (Determinant = DET*1O**P0WER) . 

CHLSKY - When CHLSKY = 1, form [C] 

Z - An area of working storage. 

ni - Statement number to which control is transferred if the decomposition fails. 

3.5.14.4 Method 

1. Mathematical Considerations. Any non-singular real symmetric matrix [A] can be uniquely 

decomposed Into the factors [A] = [L] [D] [L] . The elements of [D] and [L] are given by: 

i-1 
''i = ^-i - ^^^ ^k '^k 



3.5-30 



MATRIX SUBROUTINE DESCRIPTIONS 



2. General Comments. Interpretation of the above equations identifies that element t. . is 
composed of products of the elements in the i row of [L] times the elements in the j**^ row of 
[L] times the diagonal elements of [D] (Figure 1). Also, element I., affects only the elements in 
the i row or the i column of [L], (Figure 2). 

The above considerations indicate the means of optimizing the decomposition process to ner- 
form only the necessary operations and to keep elements in core only as long as needed. As an 
example, if [A] was strictly banded, with a bandwidth of B, then the inner product calculation of 
S... extends only to the band as all other terms are zero (Figure 3). Also in this example, all 
terms of [L] in column 5 affect only the elements inside the triangle. As soon as these terms 
are computed, column 5 need not be held in core. The optimum algorithm for banded matrices v/ould 
be to hold the triangular portion of the band in core, compute terms corresponding to the first 
column, output the first column, and move the triangular area down the band (Figure 4). 

In practice, however, structural matrices are not strictly banded, but semi-banded with a 
few scattered terms existing outside the band. The basic algorithm remains the same excent that 
the terms outside the band (active elements) must be handled in an analogous manner to those 
inside the band (band elements). This creates a rectangular storage area for the active rows 
(rows of [L] which contain at least one active element) plus a second traingular area for terms 
arising out of interactions between active rows. The storage requirements are shown in Figure 5. 

Given a matrix [A], SDC0MP will determine the optimum combination of B (bandwidth), and 
C (number of active rows) by estimating the time required to decompose [A] for all combinations 
of B and C and choosing the pair corresponding to the minimum time. 

Figures 6, 7, and 8 show how storage is allocated to various operations. 



3.5-31 



SUBROUTINE DESCRIPTIONS 




Mo 



Figure 1. Computation of element i^j' 
,6 - [^10.6 - Mo, 5 ''S *6,5 - ^0,4^4^6.4 ' * * ■*10.1*'l^6.l] /<^ 




Figure 2. Affect of element i. .. 



3.5-32 



MATRIX SUBROUTINE DESCRIPTIONS 







ik 












Iv 










:■:■:-;■:■: 




k 
















Is 




6 










M 




















\ 












m 






™s 






















k 




10 










ill 


^ 




■:-:■:■;■;■ 


Ilk 
















^ai ■■ 




k 




























>)^ 
























W: 






Iv 






















liikA* 


: 


11 



Figure 3. Computation of element i-jj (banded matrix) 

Mo. 6 -[^lo.e - ^0,5 '^b'-e.s] /^e 




Figure 4. Core storage requirements for a banded matrix. 



3.5-33 



SUBROUTINE DESCRIPTIONS 




Figure 5. Core storage requirements for a matrix with active rows. 



3.5-34 



MATRIX SUBROUTINE DESCRIPTIONS 

I Storage for the partially computed elements of [L] that are within the band. 

II Storage for a completed column of [L]. 

Ill Storage for the next column of [A] to be read in. 

IV Storage for the partially computed elements of [L] that are outside the band. 

V Storage for intermediate results computed from interactions between active rows. 



n^" 



i 



■II 



II 






K 


K 


K / — COLUMNS HELD IN CORE 






\/ 








J 


\ 






r 




\ 




B 


-1 












\ 














[ 






\ 


















N 


,. / — SPILL COLUMNS 
















V 


>c 


















/ 




\ 






















\ 


























\ 


k 


^123 


— ' 








r-l3 








T 


1 III 












I4SP- 


\ 


rU 


ii 




r 










































I 


V 
















c 
1 


































t 


































-* 


B+l 


^ 





-I5SP 




Figure 6. Definition of storage areas. 



3.5-35 



SUBROUTINE DESCRIPTIONS 




Figure 7. Location of storage areas within the matrix. 



3.5-36 



MATRIX SUBROUTINE DESCRIPTIONS 



II- 



13- 



14- 



15 



12 — - 



NZ — - 



III 



IV 



II 



UNUSED CORE 



I/O BUFFERS 



Figure 8. Location of storage areas within core. 



3.5-37 



(2) 



(3) 



(4) 



f ENTER j 



Initialize 
Parameters 



Make I/O Pass on [A] 
to Generate the B vs. C 
Vector and Copy [A] 
onto an Alternate File 



Obtain the Optimum 
B and C. Compute R 



Allocate Core 



Fill the Initial Tri- 
angle (Area I). Use a 
Scratch File for Columns 
if R > B - 1 




YES 



Read Band Portion 
of the Next Column 
of [A] into Area III 




2A 



SUBROUTINE DESCRIPTIONS 



Process the 
Final Triangle 



(11) 




(12) 



REWRITE [L] 



Generate the CHOLESKY 
Matrix [C] 



(13) 



EXIT 



Figure 9, (a) SDC^iiP program flow 



3.5-38 



MATRIX SUBROUTINE DESCRIPTIONS 




2A 



(6) 




Add Column of 
Interaction Elements 
(Area V) into Area IV 





3A 



Read Active Element 
Portion of the Next 
Column of [A] 



(7) 



Merce Active Row 
(Area IV) into 
Area III 



Reduce the Size of 
the Interaction 
Triangle 




Add Element into 
Existing Row (Area IV) 



YES 



Create New Row 
in Area IV 



Expand Interaction 
Triangle for New Row 




3A 



Figure 9.(b) SDCJIiiP program flow 



3.5-39 



(8) 



(9) 



SUBROUTINE DESCRIPTIONS 




Move the First Column of 
Area I into Area II and 
Divide by the Diagonal 



(10) 



Move First Column of 
Active Elements (Area IV 
into Area II 



Compute Interactions 
Between Active Elements 
and Add them into 
Area V 



Add Contributions of the 
Current Pivitol Column 
into Area I, Moving it Up 
as You Proceed 



Add Terms to the Active 
Rows (Area IV) and 
Move It Up 



Write Out Completed 
Column of [L] (Area II) 




Figure 9.(c) SDC0ilP program flow 



3.5-40 



I>1ATRIX SUBROUTINE DESCRIPTIONS 

3. Program Flow. The flowchart in Figure 9 gives the logical flow of SDC0MP. The following 
are comments expanding on certain areas of the flowchart: 

(1) Allocate buffers, initialize determinant, and write header records. 

(2) A vector is generated containing the number of active rows for varying bandwidths. 
The matrix [A] is copied onto an alternate file for use during the decomposition. 

(3) The estimated time for decomposition is computed for each combination of B and C. 
The B and C corresponding to the minimum time is picked. R, the number of columns 
which can be held in core, is also computed at this time. 

(4) Pointers to the various areas of core shown in Figure 6 are computed as a function 
of B, C and R. 

(5) The banded portion of the first B-1 columns of [A] are read into Area I. If R < B-1, 
columns are written on a scratch file. 

(6) As the decomposition proceeds, active rows gradually merge into the band. This 
means a column from Area V will merge into Area IV and a row from Area IV will 
merge into Area III. When this occurs, the current number of active rows decreases 
by one and the size of the interaction triangle is reduced. 

(7) As active elements corresponding to the next column of [A] are read in, they are 
either added to an already existing active row, or a new active row must be created. 
Whenever a new row is created, indices are stored identifying the row, the active 
element is stored in Area IV, and the interaction triangle is expanded to accomodate 
the added row. 

(8) As a column emerges from the triangle in Area I, it is a completed column of [L]. 

(9) Before the column can be output, all terms involving this column must be computed 
and stored. These intermediate terms are stored in either Areas I, IV, or V, depend- 
ing where the elements are located. 

(10) A column of [L] can be output. All areas of temporary storage have been updated. 
Areas I, IV, and III have all moved over one column relative to their previous 
position in the matrix. 



3,5-41 



SUBROUTINE DESCRIPTIONS 

(11) When all columns of [A] have been read in, all active rows have merged and only Area 
I exists. This final triangle is processed to complete the computation of [L]. If 
spill exists, as more core is made available by columns of [L] being output, addi- 
tional columns of the spill file are read in. 

(12) The file containing [L] is now complete. An additional file is created with the 
columns of [L] written in the reverse order. This Generates a nseudo unner tri- 
angular matrix that is used by FBS for the solution of a set of equations. 

(13) If CHLSKY was set, [L] is read, the diagonal term picked up, each column is 
multiplied by the square root of the diagonal, and the resulting [C] matrix is 
output. 

3.5.14.5 Auxiliary Subroutines 

Subroutine Name: L05!P 

Purpose: To compute the inner arithmetic loop of SDC0MP. 

3.5.14.6 Design Requirements 

The input matrix [A] should be well conditioned or positive definite as the decomposition is 
done without pivoting. 

Core storage requirements deoend on the oarameters B and C. For a given B and C, Areas II, 
III, IV, and V must reside in core along with a minimum of two columns of Area I and 5 GIN« buffers. 

Files containing [L] and [L]^ should be used as input only to FBS as they are not in 
standard NASTRAN format. 

3.5.14.7 Information Messages 

1. C0NMSG is called at entry and exit from SDC0MP. The line 

xxxx SDC0MP 
will appear twice per decomposition. The execution time of SDC0MP will be the difference in the 
times (where xxxxx = time in seconds). 



3.5-42 



IWRIX SUBROUTINE DESCRIPTIONS 

1. Message 3023 gives the values of the parameters, B, C, and R chosen for the decomposition. 

2. Message 3027 gives the estimated time in seconds to do the decomposition. 

3. Message 3024 indicates that a matrix has scattered terms way off the diagonal (i.e., a 
large bandwidth). Instead of searching all combinations of B and C, the search is started 
at the maximum bandwidth. 

3.5.14.8 Diagnostic Messages 

1. If SCD0MP was unable to find a combination of B and C which would meet core restrictions, 
fatal message 3008 occurs. 

2. In a coding sense, message 3025 is possible. However, it violates the design of SDC0MP 
and therefore, if obtained, should indicate an obscure program design error, or machine error. 

3. Message 3026 indicates that sufficient space was not reserved for the generation of the 
B vs. C vector. SDC0MP should be recompiled to increase BMAX and CMAX. 



3.5-43 



SUBROUTINE DESCRIPTIONS 

3.5.15 DECgMP (Un symmetric Matrix Decomposition) 

3.5.15.1 Entry Point: DEC0MP 

3.5.15.2 Purpose 

To decompose a real square matrix [A] into the form 

[A] = [L][U] (1) 

(where [L] is a unit lower triangular matrix, and [U] is an upper trianqular matrix), usinn 
partial pivoting within the lower band. 

3.5.15.3 Calling Sequence 

CALL DECfiIMP ($n,X,X,X) 

CS3MM0N /DC0MPX/ A(7) ,L(7) ,U(7) .SCR(3) .DET,P0WER,NX,MINDIA,B,BBAR.C,CBAR,R 

n - Statement number to which control is transferred if [A] is singular. 

X - An area of core available to DEC(JMP. 

A - Matrix control block for the input matrix [A] (if A(l) < 0, avoid 

re-writing [U] in reverse order). 

L,U - Matrix control blocks for the output matrices [L] and [U]. 

SCR(3) - GIN0 file names for three scratch files - integer. 

DET - Double precision cell where the scaled value of the determinant of [A] 
will be stored. 

P;3WER - Scale factor to be applied to DET (det([A]) = DET * 10**P?I'.JER) . 

NX - Number of computer words available at X. 

MINDIA - Double precision word where the value of the minimum diagonal of [U] is 
stored. 
Integer values describing the upper anc lower semi-bandwidths, number of active 
rows and columns and number of columns of [L] held in core, used to decompose 
[A]. (If B, BBAR = 0, GENVEC is called to compute the parameters before de- 
composint [A]. If B, BBAR / 0, the given parameters are used for decompositio 



3.5-44 




MATRIX SUBROUTINE DESCRIPTIONS 

3.5.15.4 Method 

1. Mathematical Considerations: By expanding Equation 1, introducing element notation, 
and forming the multiplication, we can solve for the elements of [L] and [U]. These 
equations are given by: 

i-1 

"ij = ^ij-^fi 'ik"kj '^^J • (3) 

2. General Comments: The implementation of the above equations is accomplished with 
several constraints in mind. The decomposition procedure is optimized such that the 
minimum number of operations is performed, with the minimum amount of core used. To 
accomplish this, the elements of the input matrix [A] are separated into two groups: 
terms inside the band (band elements), and terms outside the band (active elements). 
Also, pivoting is used only within the lower band to avoid unnecessarily filling the 
matrix with non-zero terms. 

Since, in practice, structural matrices tend to be semi-banded with scattered terms 
existing outside the band, this division of the matrix should optimize the decomposition 
process. Several parameters are generated to describe this division. B is defined as 
the upper bandwidth, 5 as the lower bandwidth, C is defined as the number of active 
columns, and C" as the number of active rows, where an active column is defined as a column con- 
taining one or more active elements above the diagonal, and an active row contains one or more 
active elements below the diagonal. Corresponding to these parameters, several storage areas 
are defined to hold the various parts of the matrix. The description and location of these 
areas are given in Figures 1 , 2 and 3. A flow chart for DEC0MP is given in Figure 4. 

The storage areas in Figures 1,2, and 3 are defined as follows: 

I Storage for the completed columns of [L] still required for computation. 

II Storage for the current column being computed. 

Ill Storage for active column elements. 

IV Storage for active row elements. 

V Storage for elements created by interactions between active row and column elements. 

VI Storage for indexes identifying active columns. 

VII Storage for indexes identifying active rows. 

3.5-45 



SUBROUTINE DESCRIPTIONS 




I4SP 
14 



II 



III 



12 
IPAK 



V — 



^ 


— 






- c 


H 


-- I3SP— ^ 




T 


1 






1 






13--^ 

-- 


























































2B+B 



VI _;^n 

C/2 C/2 



-I 


■■^~ 
















































































B+B 















































































I6SP 



I7SP 



hd 



Figure 1. Definition of storage areas for DEC0;1P. 



3.5-46 



MATRIX SUBROUTINE DESCRIPTIONS 




















































gx 







































gx 






:S;: 















































g;:;: 

























X 








;•;•:%' 






i-Si: 























II 

















Sij 




:•:•:■•■ 
































X 
















:■:•:■: 



















" 







































































i 










•**M"I 

































:::S 


m 


i 











































^ 


M 


i 










m 




























\ 


m 


.'X'l 


i 








m 


■.••:" 





























\ 


m 


i 


S| 


:':S: 




* 


.;.;•■. 



























I- 




\ 


'.'.V 

m 


i 


^ 


;>>>: 


:* 






'•'.•y. 




























\ 


m 


i 




i* 






•y-< 





























\ 


iof? 


m 


'«; 




































"N 


m 


;i«ii 










;•;•': 








X 































;»; 






m 


m 
















X 


























:■:•:•: 


■:•:•:- 


M 


m 


^M 












X 































yy.\ 


i;!t:i 


m 



:ii 



IV- 



Figure 2. Location of storage areas within the matrix 



3.5-47 



SUBROUTINE DESCRIPTIONS 



II 



12 
13 

14 



15 



I6SP 
I7SP 



NZ 





I 




II 




III 




IV 




V 




VI 




VII 



























UNUSED CORE 



I/O BUFFERS 



Figure 3. Allocation of core for DEC0MP 



3.5-48 



HATRIX SUBROUTINE DESCRIPTIONS 



ENTER 



(1) 



Initialize 
Parameters 



(2) 




Solve a Matrix of 
Order 1 or 2 
(0NETW0) 



/ RETURN j 



(3) 



YES 



Pick the Optimum 
B.B.C.C.R (GENVEC) 



(4) 



Initialize Pointers 
to Various Core 
Areas 



YES 



(5) 



<' c 


- 0? >-— 

flO 




(6) 






Transpose the 




Generate Active Columns 
Corresponding to Active 
Elements in the First 
B + 1 Rows of [A] 


1 


f 


Active C 
Terms (T 


olumn 

RANSP) 










2A 



Figure 4. (a) DEC0HP program flow 



3.5-49 



SUBROUTINE DESCRIPTIONS 



(7) 




(22) 



Finish Outputing 
Colunins of [L] , 
Re-write [U] 
(FINWRT) 



/ RETURN j 



Read Band Portion of 
A into Area III 



(8) 



Read Active Row 
Terms into Area IV 




(9) 



Add Active Column 
(Area III) into Area II 
Add Interaction Tenns 
(Area V) to Area IV. 



:io) 



Operate on the Current 
Column of [A]by All 
Previous Columns of [L] 



(12) 



(11) 



Compute the Elements 
for Active Rows 



Search the Lower Band of 
Area II for the Haximun 
Element and Interchange 
Rows to Move it to the 
Diagonal 



^ 3A 



Figure4.{b) DEC0MP program flow 



3.5-50 



MATRIX SUBROUTINE DESCRIPTIONS 




3A 



(13) 



Interchange Active 
Column Elements and 
Add in Terms from 
Last Column of[L] 



(14) 



Output Column of [U] 
Plus Active Column 
Terms 




(15) 



Compute Active Row- 
Column Interaction 
Elements 



(16) 



Move Elements in 
Area III One Row Up 



[17) 



Output Colimn of [L] 



(18) 



Move Elements of 
Area IV Over One 
Column 



(19) 



Read Next Row of 
Active Column 
Elements 



(20) 



Zero Area II 



Move Elements of Area 
Over One Column. Add 
Lower Band of Area II 
to Area I 




YES 



Merge Interaction 
Elements into Area III 
if Necessary 



(2i: 




2A 



Figure 4. (c) DEC0MP program flow 



3.5-51 



SUBROUTINE DESCRIPTIONS 

3. Program Flow: The flow chart in Figure 4 gives the logical program flow of DEC0MP. 
The following comments expand on certain portions of the flow chart: 

(1) Allocate buffers, initialize the determinant, and write header records. 

(2) If the order of [A] is 1 or 2, subroutine 0NETW0 is called to handle the 
decomposition. 

(3) If 6 and B" are input as zero, GENVEC is called to pick the optimum parameters 
for decomposition. 

(4) The pointers into the various areas of core shown in Figure 1 are computed. 

(5) If there exist active elements in the upper triangle, TRANSP is called to 
transpose these elements. 

(6) Active columns are initialized for all columns having an active element 
within the first 3 + 1 rows of [A]. 

(7) The band portion of the next column of [A] is read into Area II. 

(8) Any active elements occurring below the diagonal in the current column are 
added into existing active rows, or new active rows are created. 

(9) When an active column merges into the band, a column from Area III is added 
into corresponding positions in Area II, and a column of interaction elements 
in Area V is added to the active row terms in Area IV. 

(10) The current column of [A] in Area II is operated on by the columns of [L] 
stored in Area I. 

(11) Terms corresponding to active rows not yet merged into the band are added into 
Area 1 1 . 

(12) The lower band portion of Area II is searched for the maximum element. Rows 
are interchanged to bring it to the diagonal position, and the interchange 
index is stored in Area I. 

(13) Active columns elements are interchanged corresponding to the interchange 
within the band. If a column of [L] is about to be output (i.e., B + B 
columns of [L] are stored in Area I), terms arising from that column are added 
into the active columns. 



3.5-52 



MATRIX SUBROUTINE DESCRIPTIONS 

(14) The column of [U] from Area II plus a row of active column terms in Area III 
are output. 

(15) If active rows and columns exist, terms arising from their interaction are 
computed and added into Area V. 

(16) Elements in the active columns are moved up one row position in Area III to 
replace the output elements, and make room for a new row. 

(17) The first column of [L] in Area I is written out if Area I is full. The 
active row elements belonging to that column are also outout. 

(18) The columns of [L] in Area I are moved over one column and the lower band 
portion of Area II is stored in Area I. 

(19) Active rows in Area IV are moved over one column. 

(20) The next row of active elements in the upper triangle of [A] is read. 
Elements are added to existing active columns, or new columns are created. 

(21) When possible, a row of interaction elements in Area V is merged into the 
bottom row of active column elements (Area III). 

(22) After processing all columns of [A], FINWRT is called to complete the 
outputting of [L] and to re-write [U]. 

3.5.15.5 Auxiliary Subroutine TRANSP 

1. Entry Point: TRANSP 

2. Purpose: To do an in-core transpose of the active elements occurring outside the band 
and in the upper half of the matrix (i.e., transpose all elements a. • such that j - i ^ B). 

' J 

3. Calling Sequence: CALL TRANSP (X,X,NX,A,B,SCRFIL) 

X - An area of core available to TRANSP. 

NX - Number of words available at X. 

A - GIN0 file containing the input matrix [A] - integer. 

B - Upper bandwidth of matrix [A]. 

SCRFIL - GIN0 file where transposed elements are stored. 



3.5-53 



SUBROUTINE DESCRIPTIONS 

4. Method: The input matrix [A] is read, and all elements occurring outside the band in 
the upper triangle are stored in core, along with their row and column position. This list 
is then searched and elements output in transposed order. 

3.5.15.6 Auxiliary Routine 0NETW0 

1. Entry Points: iSNETW^.FINWRT 

2. Purpose: 0NETW0 is a separate routine whose sole responsibility is to solve matrices 
of order one or two. 

FINWRT is a section of code separated from DEC0MP due to compiler overflow. Its 
function is to finish outputting the remaining columns of [L] and to re-write the columns 
of [U]. 

3.5.15.7 Auxiliary Subroutine GENVEC 

1. Entry Point: GENVEC 

2. Purpose: To pick the optimum B, B, C, C, and R for a given matrix [A]. 

3. Calling Sequence: CALL GENVEC ($n^ ,BUF,A,NX,X,N,B,BBAR,C,CBAR,R,IENTRY) 

n-] .- Statement to which control is transferred if a null column is discovered 
in [A]. 

BUF - Location of a GIN0 buffer. 

A - GIN0 file containing the input matrix [A]. 

X - An area of core available to GENVEC. 

NX - Number of words of core available at X. 

N - The order of the matrix [A]. 

B.BBAR, /Integer output parameters giving the ootimum values for the upper and lower 
C.CBAR, - < bandwidths, the number of active rows and columns, and the number of columns 
Vc 



R Vof [L] held in core. 

TFNTRY /= 1 implies DEC!3MP called GENVEC 
\= 2 implies CDC0MP called GENVEC 



4. Method: The following logic flow gives the means by which the optimum bandwidths are 
chosen. 



3.5-54 



MATRIX SUBROUTINE DESCRIPTIONS 

A. Locate extreme non-zero terms 

1. Initialize active column list to zero. The length of the list is equal to the 
maximum value of the upper bandwidth (B) that is of interest. 

(B = J.^ or the order of the problem, whichever is less, where N is the order of 
^ max NMn 

the matrix and Mg is the arithmetic time in y seconds for performing one multiply and 

one add. 

2. Initialize the column list to zero. The length of the list is the order of 

the problem. • 

3. Locate the non-zero elements in the next column of the matrix. 

4. Insert the column number of all non-zero elements in the correct row oosition 
of the column number list with the following constraints: 

a. Consider only elements in the lower triangle. 

b. Do not insert column numbers in row positions already occupied. 

5. Insert the row number of the non-zero element located in the lowest numbered 
row into the column position of the row number list for the current column under 
consideration. 

6. Return to step 4 until all columns of the matrix have been processed. 

B. Determine active columns 

1 . Zero counter E 

Set Counter F to N-1 
Set Counter G to N-1 
Set Counter H to 2 

2. Beginning with the last entry in the row number list, subtract the current 
value of counter H, and test for a negative sign. If negative, increment counter 
E by one. 

3. The current value of counter E is the number of active columns when the upper 
bandwidth is equal to the current value of counter F. Compare counter E with the 
existing entry in the active column list for the bandwidth indicated by counter F. 
Update the active column list if counter E is greater than the existing entry. 

4. Decrement counter F by one. Return to step 2 unless counter F is zero. 

3.5-55 



SUBROUTINE DESCRIPTIONS 

5. Decrement counter G by one. Increment counter H by one. Set counter F to the 
value of counter G. Zero counter E. Return to step 2 unless counter G is zero. 

5. The final active column list contains the maximum number of active columns for 
bandwidths of unity through the maximum upper bandwidth investigated. 

7. Prepare reduced active column list by extracting pairs - minimum B and 
associated C for unique values of C. 

C. Determine active rows for given B and B 

1. Extract pairs (row number, L, and column number, K) from the column number 
list for which 

L - K > B 

2. Consider a new list of pairs consisting of K and L + B. For each pair 
(K, L + B) determine the number of remaining pairs (K., (L + B).) for which 

K. < L + B and (L + B). > K 

3. The maximum number of pairs satisfying the relation in step 2 for any single 
pair is C for the given B and B. 

D. Select B, B, C and Z for Minimum Decomposition Time 

1. Select the next value of B and associated C from the reduced active column 
list (begin with maximum B of interest). 

2. Assume B = B and C = C. 

3. Calculate R and T with preliminary timing equations. 

4. Save the minimum T and the associated B and C. 

5. Return to step 1 unless all entries in reduced active column list have been used. 

6. If the matrix is unsymmetric use B and C from step 4 and set B = B. 

7. Determine C for a given B and B. 

8. Calculate R and T with the preliminary timing equations. 

9. Compare with the previous minimum T. 



3,5-56 



MATRIX SUBROUTINE DESCRIPTIONS 

10. If the new T exceeds the previous minimum by more than 20% or B = maximum B 
of interest go to 12, 

n. Save the minimum T along with associated B, B, C and C. Increment S by 2% of 
the B associated with minimum T and go to 7. 

12. Return to B = B. 

13. Decrement B by 2% of the B associated with minimum T and determine the 
associated C. 

14. Calculate R and T with the preliminary timing equations. 

15. Compare with the previous minimum T while decrnmenting S. 

16. If the new T exceeds the previous minimum by more than 20% or B = 2 go to 18. 

17. Save the minimum T along with associated B, B, C and C and go to 13. 

18. Save values of B, B, C and C associated with the minimum value of T from 
upsearch and downsearch on B, for use in decomposition. 

3.5.15.9 Auxiliary Function FINDC 

1. Entry Point: FINDC 

2. Purpose: To find the number of active rows (C) for a given B and B. 

3. Calling Sequence: CALL FINDC (B,BBAR,N,X,Y,CBAR) 

B - Upper bandwidth - integer. 

BBAR - Lower bandwidth - integer. 

N - Order of the problem. 

X - Column number list. 

Y - Scratch vector. 

CBAR - The number of active rows, C. 

4. Method: See step C in the GENVEC method. 



3,5-57 



SUBROUTINE DESCRIPTIOMS 

3.5.15.10 Auxiliary Routine TIMEEQ 

1. Entry Points: T,TFIN,RC0RE 

2. Purpose: To compute the preliminary and final timing equations for decomposition, 
and to compute the core allocation function. 

3. Calling Sequences: CALL T (B,BBAR,C,CBAR,R,IENTRY,N,TIM) 

CALL TFIN (B.BBAR,C.CBAR,R,IENTRY,N,TIMEX) 
CALL RC0RE (B.BBAR.C.CBAR.N.IENTRY.NX.R) 

D RD AD 

c'cBAR " ^PP^"" ^"'^ lower bandwidths, number of active rows and columns. 

IFNTRY i~^ implies entry was from DEC0MP. 
\=2 implies entry was from CDC0MP. 

N - The order of the problem. 

TIM - Floating point value for the preliminary time. 

TIMEX - Floating point value for the final timing equation. 

NX - Number of core words available to DEC0MP or CDC0MP. 

R - The number of columns of [L] that can be held in core (output by RC0RE, 

input to T and TFIN) . 

4. Method: The following equations are evaluated to give the desired output. 

A. Core Function 

R = (NX - {(B + B + 1) + 2*IENTRY*MIN0(N,B + B + B) + 

2*IENTRY*C*(B + 2) + 2*C*IENTRY*(MIN0(B + B.N) + 1) + (4) 

2*IENTRY*C*C + C + C*IENTRY + C) - 6*SYSBUF)/(2*IENTRY*B) 

B. Preliminary Timing Equation 

TIM = -\ [MrBR + M.(BC + BC + BC + 2CC) + IB(B + B - R - 1)] (5) 

10° 

where 

Mg = Arithmetic time in y seconds for one term inside the band. 

M_ = Arithmetic time in y seconds for one term in the active row or 
active column. 



3.5-58 (12-1-69) 



MATRIX SUBROUTINE DESCRIPTIONS 



I = 1/9 time in p seconds for one term. 



C. Final Timing Equations 

TIMEX is a function of T, , !„, T, and T. as defined below (P = matrix 

packing time in u seconds for one term). 

T, is given by: 

T^ = K^ [MgBR + IS{B + B - R) + P(B + 2B)] , (6) 

where 

(n - B - 2B , if N - B - 2B > 
Ki = . (7) 

(O , if N - B - 2B < . 

Tp is given by: 

h - 
Tg = Y- tBKjMg + (K3 - R)(I - Mg)B + 2PB + PKg] , (8) 

where 

K2 = K3 = B + S (9) 

if N >. B + 2B; otherwise, 

K2 = N - B , (10) 

and 

(b + B ifN^B + B 

K = . (11) 

^ (N if N < B + B . 

To is given by: 



where 



B + B-R,ifB-R<.0 

h = - (13) 

B , if B - R > . 



3.5-59 



SUBROUTINE DESCRIPTIONS 



and 



if N > B + 2B. Otherwise, 



Kg = B +|b , (14) 



and 



N-R,ifN-R£B 

K4 = L . (15) 

^ B , if N - R > B . 



Kg = N (16) 

T- is given by: 

T4 = (N - B)[Mj,(BC + BC + BC + CC) + P(C + C)] . (17) 



Finally, 



TIMEX = (T^ + '''2 + T3 + ^n)^0'^ , (18) 



where TIMEX is the total estimated time for decomposition. 

3.5.15.11 Auxiliary Subroutine DL0J2P 

1. Entry Points: DL00P,DDL!3i3P,XL(il0P 

2. Purpose: To improve efficiency of F0RTRAN generated code for several loops 
in DEC0MP. 

3.5.15.12 Design Requirements 

Core storage requirements depend on the parameters B, §, C and C. Areas II, III, IV, and V 
must reside in core at all times, along with a minimum of two columns of Area I, and five fiIN0 
buffers. GENVEC is designed to pick the combination of B, B, C, and C such that the problem 
will allocate if at all possible. 

The file containing [U] is not in standard format, as the active column terms are stored 
out of place. For this reason [L] and [U] should be used as input only to GFBS or an associated 
routine. 



3.5-60 



MATRIX SUBROUTINE DESCRIPTIONS 

3.5.15.13 Information Messages 

1. C0NMSG is called at entry and exit from DECAMP. The line 

XXXX DEC0MP 

will appear twice per decomposition. The actual execution time of DECAMP will be the 
difference in the times (where XXXX = time in seconds). 

2. 3023 B = XXX C = XXX R = XXX 

3028 BBAR = XXX CBAR = XXX R = XXX 

These messages give the parameters chosen for the decomposition. 

3. 3027 DECi3MPi2SITI0N TIME ESTIMATE = XXX 

Gives the estimated time for the decomposition in seconds. 

3.5.15.14 Diagnostic Messages 

Fatal error messages 3008 and 3025 may occur. 



3.5-61 



SUBROUTINE DESCRIPTIONS 

3.5.16 CDCgMP (Complex Matrix Decomposition) 

3.5.16.1 Entry Point: CDC0MP 

3.5.16.2 Purpose 

To decompose a complex square matrix [A] into the form [A] = [L][U] where [L] is a 
unit lower triangular matrix and [U] is an upper triangular matrix. 

3.5.16.3 Calling Sequence 

CALL CDC0MP ($n^,X,X,X) 

C9mW /CDCMPX/ A(7),L(7),U(7),SCR(3),DET(2),P|3WER,NX,MINDIA,B,BBAR,C,CBAR,R 

n-] - Location in calling program where control is transferred if [A] is sinqular. 

X - An area of working storage. 

A - Input matrix control block for [A]. 

L,U - Output matrix control blocks for [L] and [U]. 

SCR(3) - Three scratch files available for use. 

DET{2) - Two double precision words where the real and imaginary values of the 
determinant are stored. 

P0WER - Scale factor to be applied to the determinant (det ([A]) = DET*1Q**P0WER) . 

NX - Number of computer words at X. 

MINDIA - Double precision word where the modulus of the minimum diagonal element 
of [U] is stored. 

B.BBAR, Tlf B = BEAR = 0, compute and store B.BBAR.C.CBAR.R before decomposing [A]. 

C CBAR < 

' )If B or BBAR ^ 0, use previously stored values of B.BBAR.C.CBAR and R for 



(decomposing. 



3.5-62 



MATRIX SUBROUTINE DESCRIPTIONS 

3.5.16.4 Method 

CDC0MP is simply a copy of DEC0MP with the arithmetic statements replaced by complex 
arithmetic. Pointers to storage areas were modified to accommodate the extra words needed. 

3.5.16.5 Auxiliary Subroutine CTRNSP 

Purpose: Complex version of TRANSP (see section 3.5.15.5). 

3.5.16.6 Auxiliary Subroutine C0M12 

Purpose: Complex version of 0NETW0 (see section 3.5.15.6). 

3.5.16.7 Design Requirements 

See subroutine descriptions for DEC0HP, section 3.5.15. 

3.5.16.8 Diagnostic Messages 

See subroutine descriptions for DEC0MP, section 3.5.15. 



3.5-63 



SUBROUTINE DESCRIPTIONS 

3.5.17 FBS (Forward - Backward Substitution) . 

3.5.17.1 Entry Point: FBS. 

3.5.17.2 Purpose 

Given the decomposition of a real symmetric matrix [A] = [L] [D] [L] FBS will perform the 
forward-backward pass necessary to solve the system of linear equations [A] [X] = [B]. 

3.5.17.3 Calling Sequence 
CALL FBSCZ.Z) 

C0MM(}N/FBSX/L(7) ,U(7) ,B(7) ,X(7) ,NZ,PREC,SIGN 

L,U - Matrix control blocks for the lower and upper triangular factors cutout from 
SDCgfMP. 

B.X - Matrix control blocks for the matrices [B] and [X]. 

NZ - Number of computer words at Z. 

(1, perform arithmetic in single precision. 



PREC - 

(2, perform arithmetic in double precision. 

(+1, solve [A] [X] = [B]. 
SIGN - { 

(-1, solve [A] [X] = -[B]. 

Z - An area of working storage. 

3.5.17.4 Method 

Mathematical Considerations. Given the unit upper and lower triangular matrices [L] and 
[L] , with the diagonal matrix [D] stored over their diagonals, FBS solves the two systems of 
equations given by 

[L] [Y] = +[B] 
and 

[L^ [X] = [D]-^[Y] 



3.5-64 



MATRIX SUBROUTINE DESCRIPTIONS 
Elements of [Y] and [X] are given by 

Program Flow. Overall program flow is identical to that of GFBS (see section 3.5.19). The 
only difference in the two routines is FBS uses the decomposed matrices output from SDC0MP, while 
GFBS uses those output by DEC0HP. Likewise, the computed equations differ slightly. 

3.5.17.5 Design Requirements 

One colunn of [B] and one GIN|3 buffer must fit in core. 

3.5.17.6 Diagnostic Messages 

See GFBS (see section 3.5.19). 



3.5-65 



SUBROUTINE DESCRIPTIONS 

3.5.18 SSG3A (Driver for FBS) . 

3.5.18.1 Entry Point: SSG3A. 

3.5.18.2 Purpose 

, To solve [A] [X] = [B] using [A] = [L] [L] . On option to compute the residual matrix 
[RES] = [A] [X] - [B]. 

3.5.18.3 Calling Sequence 

CALL SSG3A(FILEA,FILEL,FILELT,FILEB,FILEX,SCR1,SCR2, IRES. FILER) 

FILEA - GIN0 file name of [A] - integer - input. 

FILEL - GINU file name of [L] - Integer - input. 

FILELT - 6IN0 file name of [L]^ - integer - input. 

FILEB - GIN0 file name of [B] - integer - input. 

FILEX - GIN0 file name of [X] - integer - input. 

SCRl - GINjJ name of scratch file - integer - input. 

SCR2 - GIN0 name of scratch file - integer - input. 

IRES - Option for residual vector - integer - input. IRES = suppresses calculation 
of residual vector. 

FILER - GINP file name of residual vector - integer - input. 

3.5.18.4 Method 

/FBSX/ is set to compute [A] [X] = [B]. 

SSG2B is called to compute [RES] = [A] [X] - [B] (see section 3.5.17.3), 

For each column of [X], {X^}, e^ is computed. 

e^ = {X.}'^{RES^}/{B.}^{X.} 

3.5.18.5 Design Requirements 
Open core at /SSGA3/. 



3.5-66 



MATRIX SUBROUTINE DESCRIPTIONS 

3.5.19 GFBS (General Forward - Backward Substitution) . 

3.5.19.1 Entry Point: GFBS. 

3.5.19.2 Purpose 

Given the decomposition of a general square matrix [A] = [L] [U], GFBS will solve the system 
of equations [A] [X] = [L] [U] [X] = ± [B] 

3.5.19.3 Calling Sequence 
CALL GFBS (Z,Z) 
C0W10N/GFBSX/L(7),U(7).B(7),X(7),NZ.PREC.ISIGN 

L.U.B.X - Matrix control blocks for the matrices [L], [U], [B], and [X]. 

X{5) - Desired output type for [X]. 

NZ - Number of computer words available at Z. 



PREC 



ISIGN 



1, use single precision arithmetic 

2, use double precision arithmetic 

1, solve [A] [X] = + [B], 
.-1, solve [A] [X] = -[B]. 



Z - An area of working storage. 
3,5.19.4 Method 

1. Mathematical Considerations. Given [L], [U] (n by n lower and upper triangular 
matrices) and [B] (a n by m matrix) GFBS solves the two systems of equations 

[L] [Y] = + [B] 
and 

[U] Lxj = [Y] 



3.5-67 



SUBROUTINE DESCRIPTIONS 



Elements of [Y] and [X] are given by 

^1j = l^^ij - J+i "ik^j^^i (2) 

2. Initialization Phase. The type of arithmetic to be performed is computed as a function 
of the type of [L], [3], and the precision requested by the calling routine. Corresponding 
transfer vectors are set up to transfer control to the proper arithmetic computation. Core 
storage is filled with as many columns of [B] as possible. 

3. Forward Pass. The intermediate values of [Y] are computed directly over the columns of 
[B] currently in core. This is a forward pass on [L] since it is read sequentially forward. 
Interpretation of Equation 1 shows that y, . is complete after the first column of [L] has been 
read, y,. after column 2, etc. Elements of [L] are read one at a time via INTPK and the 
appropriate term subtracted off. 

4. Backward Pass. Elements of [X] are computed by processing [U] in the reverse order. 
Reading the last column of [U] completes x^ ., the n-1 column of [U] gives \.] ^y etc. In order 
to facilitate the reading of [U], it was written in the reverse order by DECjIMP, allowing a 
forward pass to be made in actuality. 

5. Output Phase. The finished columns of [X] are packed and output via PACK. If more 
columns of [3] still exist, core is once again filled with vectors of [B] and the process 
repeated until all columns of [X] have been computed. 

3.5.19.5 Design Requirements 

At least one column of [B] must be unpacked in core, along with one RIN0 buffer. 

3.5.19.6 Diagnostic Messages 

If insufficient core is available for GFBS, fatal message 3008 occurs. 

If a diagonal term does not exist for a column of [U], fatal message 3005 occurs. This is 
noramlly detected in DEC0MP implying care was not taken in processing singular matrices in the 
calling routine calling DEC0MP. 



3.5-68 



MATRIX SUBROUTINE DESCRIPTICNS 

3 . 5 . 20 SIZLVER (SiitiuUaneous Equation Solution Routine ) . 

3.5.20.1 Entry Point: S0LVER. 

3.5.20.2 Purpose 

To perform the following three functions: 

1. Solve [A] [X] = -[B] for X where A is a real symmetric matrix which has been 
decomposed by SDC0MP. 

2. Evaluate the matrix equation [E] = [D] + [B]^ [X] 

3. On option, compute 

in 



[D] 

3.5.20.3 Calling Sequence 

CALL S0LVER(L,U,X.B,D,E, EPS. FLAG, SCR) 

where: 

L.U are the GIN0 file names of the data blocks containing the lower and uooer triangular 
factors of A, respectively. 

X is the GIN0 file name of the data block where the solution matrix will be written. 
B is the GIN0 file name of the data block containing the right hand matrix in [A] [X] = -[B] 
D,E are the GIN0 file names of the data blocks in Equation (2) above. 
EPS is the real single precision result of the division in Equation (3). 
SCR is the GIN0 file name of a scratch file for use by S0LVER. 
\^ 0, compute e from Equation (3) above and store in EPS 



FLAG . 

0, do not compute e 

/S0LVRX/ is open core for S0LVER 

Note: 

1. L must be output from subroutine SDC0MP. 

2. If D = A, then E is the error residual matrix. 



SUBROUTINE DESCRIPTIONS 

3.5.20.4 Method 

/FBSX/ is initialized and FBS is called to solve [A] [X] = -[B]. 

/MPYADX/ is initialized and MPYAD is called to compute [E] = [D] + [B] [A]. FLAG is 
tested. If FLAG = 0, return is made. Otherwise, INTPK is called to unpack and interpret each 
non-zero term of E. The cumulative sum of the absolute value of all non-zero terms of E is 
formed in double precision. This operation is then performed on D. Finally e is the division 
of these two quantities and is stored in EPS in sinqle orecision. 

3.5.20.5 Design Requirements 

/S0LVRX/ must be inserted at the end of the overlay segment containinn S0LVFR. 

3.5.20.6 Diagnostic Messages 

The following system fatal message may be issued by S0LVER: 
3001 



3.5-70 



MATRIX SUBROUTINE DESCRIPTIONS 

3.5.21 DMPY (Multiply a Diagonal Matrix by an Arbitrary Matrix) . 

3.5.21.1 Entry Point: DMPY. 

3.5.21.2 Purpose 

To pre or post multiply an abritrary matrix [B] by a diagonal matrix, i.e. [C] = [D][B] or 
[C] = [B][D]. 

3.5.21.3 Calling Sequence 

CALL DMPY(Z,Z) 

C(KMM(3N/DMPYX/D(7).B(7).C(7),NZ. FLAG. SIGN 

Z - An area of working storage. 

NZ - The number of computer words at Z. 

D - Matrix control block for the diagonal matrix. 

B - Matrix control block for the general matrix. 

C - Matrix control block for the product matrix. 

C(l) must contain the GIN0 file name prior to entry. 

C(5) must contain the arithmetic type of the elements of C, 

DMPY will accumulate C(2) and C(6) and set C(7) = 0. 

C(3) and C(4) may be set by the user before or after the call. 

(= 0, pre-multiply B by D. 
FLAG - < 

[^ 0, post-multiply B by D. 

(+1, form positive product. 
SIGN - ' 



(-1, form negative product. 
3.5.21.4 Method 



The type of arithmetic is determined (real or complex). The elements of the diagonal 
matrix, D, are unpacked at Z. INTPK is used to read and interpret the non-zero elements of B, 
column by column. The following equations are used: 



Pre-multiplication: r. . = Hh 

ij 1 i,1 

Post-multiplication: c. = b d 

1.1 1,1 i 



3.5-71 



SUBROUTINE DESCRIPTIONS 

3.5.21.5 Design Requirements 

Double precision arithmetic is used throughout. 

The amount of core at Z must be sufficient to hold the unpacked diagonal terms of D and 
two GIN0 buffers. 

The dimensions of D and B must be compatible although this is not checked. 

3.5.21.6 Diagnostic Messages 

The following system fatal messages may be issued by DMPY: 
3001 
3002 



3.5-72 



MATRIX SUBROUTINE DESCRIPTIONS 

3.5.22 ELIM (Perform a Matrix Reduction ). 

3.5.22.1 Entry Point: ELIM. 

3.5.22.2 Purpose 

To perform a matrix reduction on the structural model by computing the matrix equation: 
[Ki,.] = [K..] + [Kjif [G.] + [s/CKji] + [GjfCKjj] [Gj] 

3.5.22.3 Calling Sequence 

CALL ELIM{KII3,KJIB,KJJB,GJ,KII,SCR1,SCR2,SCR3) 

where KIIB, KJIB, KJJB, GO and KII are the GIN0 file names of each of the matrices in the 
above equation. SCRl . SCR2 and SCR3 are GIN0 file names of three scratch files used by ELIM. 
Open core for ELIM is defined by /ELIMX/. 

3.5.22.4 Method 

ELIM computes the above matrix equation by three successive calls to MPYAD. These are as 
follows: 

[SCRl] = [Kjj] [G.] . []?..] 

tSCR2] = [K..]T [G.] + []<..] 

[Kii] = [Gj]^ [SCRl] + [SCR2] 

3.5.22.5 Design Requirements 

/ELIMX/ must be included at the end of the segment in which ELIM resides. 



3.5-73 



SUBROUTINE DESCRIPTIONS 

3.5.23 FACTOR (Decompose a Matrix Into Triangular Factors) . 

3.5.23.1 Entry Point: FACT0R. 

3.5.23.2 Purpose 

To decompose a symmetric matrix into its two triangular factors. 

3.5.23.3 Calling Sequence 

CALL FACTOR (A.L.U.SCRl ,SCR2) 

Where A, L, U are the GIN0 file names of the data blocks for the symmetric matrix to be 
decomposed, its lower triangular factor and its upper triangular factor, respectively. If U is 
negative, FACT0R will decompose the symmetric matrix [A] on file A such that 

[A] = [C][cf , 

where the Cholesky decomposition is used. [C] will be written on U as a lower triangular matrix. 
L will contain the lower triangular factor of a standard non-Cholesky decomposition. SCRl and 
SCR2 are GINU file names of two scratch files for use by FACT0R. The common block /FACTRX/ is 
open core for FACTOR. 

3.5.23.4 Method 

FACTfJR initializes /SFACT/ and calls SDC0MP to accomplish the decomposition, 

3.5.23.5 Design Requirements 

/FACTRX/ must be included at the end of the segment which contains FACT0R, 

3.5.23.6 Diagnostic Messages 

The following system fatal message may be issued by FACT0R: 
3005 



3.5-74 (12-1-69) 



MATRIX SUBROUTINE DESCRIPTIONS 

3.5.24 TRANP1 (Driver for TRNSP ). 

3.5.24.1 Entry Point: TRANPl . 

3.5.24.2 Purpose 

To drive TRNSP to compute [B] = [A]^, 

3.5.24.3 Calling Sequence 

CALL TRANPUFILEA,FILAT.NSCRTH,SCR1.SCR2.SCR3,SCR4.SCR5,SCR6,SCR7,SCR8). 
FILEA - GIN0 name of [A] - integer - innut. 
FILAT - GIN0 name of [A] - integer - input. 
NSCRTH- Number of scratch files - integer - input. 
SCRl , ... , SCR8 - GIN0 names of scratch files - integer - inout. 

3.5.24.4 Method 

/TRNSPX/ is set based on the trailer of FILEA. 

3.5.24.5 Design Requirements 
Open core at /DTRANX/. 



3,5-75 



SUBROUTINE DESCRIPTIONS 



3.5.25 TRNSP (Matrix Transpose) . 

3.5.25.1 Entry Point: TRNSP. 

3.5.25.2 Purpose 

To compute [A] given [A]. 

3.5.25.3 Calling Sequence 
CALL TRNSP(Z) 

Z - Array of core. 
C0MM0N/TRNSPX/MCBA(7).MCBAT(7),LC0RE,NSCRTH,SCR(8) 
MCBA - Matrix control block for [A] - input. 
MC3AT - Matrix control block for [A] - input. 
LC0RE - Length of Z array - integer - inout. 

NSCRTH - Number of scratch files available - integer - innut. 1 i NSCRTH * 8. 
SCR - List of GIN0 names of scratch files - integer - input. 

3.5.25.4 Method 

Three methods are possible: 

Method 1 - In-core matrices. 

If the full matrix can be held in core, [A] is unpacked into core, and packed 

out onto [A] . 

Method 2 - Simple sub-matrices. 

The matrix [A] is broken up one column at a time into submatrices. The submatrices 
are written on scratch files, read in and transposed one at a time. The break-un of 
[A] can be pictured as follows: 



[A] 



SCRATCH 


1 


SCRATCH 


2 


SCRATCH 


3 



etc. 



3.5-76 



MATRIX SUBROUTINE DESCRIPTIONS 

If insufficient scratch files are available to hold [A], multiple passes may be made 
Method 3 - Multiple passes on submatrices. 

If multiple passes on [A] are necessary in Method 2, it may be more efficient to 
create larger submatrices and pass each submatrix several times rather than several 
passes on [A]. The break-up of [A] can be pictured as follows: 

CI3RE L0AD 1 



[A] 



L 





[SCRATCH 1 


C0RE L0AD 2 1 


C0RE L0AD 3 ' 


SCRATCH 2 


C0RE L0AD 4 i 



etc. 



TRNSP will choose between the methods to minimize running time. 

3.5.25.5 Design Requirements 

Methods 2 and 3 require at least one scratch file. 

Neither [A] nor [A] may be purged. 

One unpacked column of [A] and NSCRTH+1 GIN0 buffers must fit into core. 

3.5.25.6 Diagnostic Messages 

A message indicating insufficient core is produced if the third of the above requirements 
is not satisfied. Either reduce the number of scratch files or increase the open core 
available to TRNSP. 



3.5-77 



GENERAL COMMENTS AND INDEXES 

4.1 GENERAL COMMENTS AND INDEXES 

The NASTRAN modules (a module is a logical group of subroutines) documented in this 
section have been classified into 7 categories: 1) Executive Preface modules, 2) Executive 
modules, 3) Executive DMAP instructions, 4) Executive DMAP modules, 5) functional modules, 
5) output modules, and 7) matrix modules. 

Executive Preface modules are those which are executed prior to the execution of the 
first module in a DMAP sequence. They consist of: 1) XCSA (Executive Control Section Analysis), 
which processes the NASTRAN Executive Control Deck; 2) IFPl (Input File Processor, Part 1), 
which processes the NASTRAN Case Control Deck; 3) XS0RT (Executive Bulk Data Card Sort), 
which sorts the NASTRAN Bulk Data Deck; 4) IFP (Input File Processor), which processes the 
sorted Bulk Data Deck; 5) IFP3 (Input File Processor 3), which processes bulk data cards 
unique to an axisymmetric conical shell problem; 6) XGPI (Executive General Problem 
Initialization), the heart of the Preface, which a) translates (compiles) a DMAP sequence 
into an internal form, the 0SCAR, - see section 2.4.2.1, and b) for problem restarts, 
initializes data blocks and labeled common blocks; and 7) UMFEDIT (User Master File Editor), 
which creates and manipulates User Master Files. 

The only module classified as an Executive module, per se, is XSFA (Executive Segment 
File Allocator), which is the "administrative manager" of files for NASTRAN. 

Executive DMAP instructions documented in this section are REPT, JUMP, C0ND. EXIT and 
END. The DMAP instructions BEGIN, LABEL and FILE are not allocated a separate section, and 
therefore brief explanations follow. 

1. The BEGIN DMAP instruction is a declarative DMAP instruction which denotes the 
beginning of a DMAP sequence. It is analogous to a computer operating system control 
card which calls a compiler of the system. 

2. The FILE DMAP instruction is a declarative DMAP instruction which alters the normal 
attributes of a data block in an 0SCAR entry (see an explanation of the attributes 

AP, LTU, TP, NTU of a data block in the Data Section Format for functional modules 
section in the description of the 0SCAR, section 2.4.2.1). These attributes of a data 
block are used by the Executive Segment File Allocator (XSFA) module in performing its 
task. 



4.1-1 



MODULE FUNCTIONAL DESCRIPTIONS 

3. The LABEL DMAP instruction is used to label a location in a DMAP sequence so 
that the location may be referenced by the DMAP instructions JUMP, C0ND and REPT. 

A more detailed description of these three Executive DMAP instructions can be found 
in section 5 of the User's Manual. 

Executive DMAP modules consist of CHKFNT, SAVE. PURGE, EQUIV, PARAM and SETVAL. In 

addition to the descriptions in this section, the reader is referred to section 5 of the 

User's Manual, where further explanations of the uses of EQUIV, PURGE and CHKPNT can be 
found. 

Functional modules comprise the bulk of the descriptions in this section. Functional 
modules perform the actual structural problem solution. The reader is referred to section 5 
of the User's Manual for a) general comments on DMAP rules and b) the syntactical rules of 
the DMAP calling sequences referring to functional modules. 

Output modules are those whose entire output is directed a) to the system output 
file and/or b) to a tape which will drive a plotting device. 

Matrix modules are those which, although no different operationally from functional 
modules, are most likely to be used by the program user who wishes to take advantage of the 
Direct Matrix Abstraction capabilities of NASTRAN; therefore, they are separately categorized. 

4.1.1 Use of Module Functional Descriptions 

Each module documented by means of a Module Functional Description (MFD) has been 
assigned an integer i, and its MFD is documented in section 4.i. For functional modules, 
a consistent numbering scheme has been followed, wherever possible, in the MFD's. For a 
functional module whose assigned integer is i, then, 

4,i Title 

4.i .1 Entry Point 

4.i.2 Purpose 

4.i.3 DMAP Calling Sequence 

4.i.4 Input Data Blocks 

4.i.5 Output Data Blocks 

4.i.5 Parameters 



4.1-2 



GENERAL COMMENTS AND INDEXES 

4.1.7 Method 

4.i.8 Subroutines 

4.1.9 Design Requirements 

4.i.l0 Diagnostic Messages 

comprises this numbering scheme. The title: a) classifies the module into one of the seven 
categories defined in the first paragraph of section 4.1; b) defines the module name, which, 
if it is a DMAP module (one which is called by a DMAP instruction), is the name by which it 
must be called in the DMAP calling sequence; and c) defines, parenthetically, the phrase 
from which the name was derived. Comments on the remaining sections follow. 

1. Entry Point 

This section defines the entry point of the module. A module's entry point usually 
agrees with the module name, but there are exceptions. For example, the READ (Real 
Eigenvalue Analysis Displacement) module has the entry point REIG (the entry point READ 
is a subroutine in the GIN0 collection of routines). 

2. Purpose 

A brief description of the purpose of the module is given. The casual or first-time 
reader will perhaps go no further than read the purpose. 

3. DMAP Calling Sequence 

The DMAP calling sequence as it appears in a Rigid Format is given (see section 3 of 

the User's Manual for a detailed description of the Rigid Formats in NASTRAN). 

DMAP calling sequences for Executive DMAP instructions and for Executive DMAP modules follow 

no fixed format. Refer to the individual Module Functional Descriptions for details on their 

DMAP calling sequences. Functional modules, which are always "called" via a DMAP calling 

sequence, do have a fixed format. Consider the following DMAP calling sequence for functional 

module SMA2, which generates the mass matrix, [M ], and the damping matrix, [B ]: 

SMA2 CSTM.MPT.ECPT.GPCT.DIT/MGG.BGG/V.Y.WTMASS = 1 .O/V,N,N0MGG/V,N.N0BGG/V,Y, 
C8IUPBAR = -1 $ 

SMA2 is the module name. The name of a module must begin with an alphabetic character 



4.1-3 (3/1/70) 



MODULE FUNCTIONAL DESCRIPTIONS 

followed by up to seven additional alphanumeric characters. Following the name is a blank 
field. Following this blank field is the list {CSTM.MPT.ECPT.GPCT.DIT} of data blocks input 
to the module. The list is terminated by a slash (/). Each item in this list is separated 
by a comma. Note that the number of commas for this list is one less than the number of input 
data blocks. The second slash terminates the list {MGG.BGG} of data blocks output from the 
module. The rule for naming input and output data blocks is the same as for mpdule names. 
Each subsequent slash terminates a parameter field. Each parameter field contains three parts 
separated by commas. The first part is either the letter "V" or the letter "C", defining the 
parameter as a variable or as a constant respectively. The second part is either the letter 
"Y" or the letter "N". "Y" implies "yes" the value of the parameter may be specified on a 
PARAM bulk data card, and "N" implies "no" the value of the parameter may not be specified on a 
PARAM bulk data card. The third part may be either: (a) the name of the parameter, (b) the 
value of the parameter, or (c) the name and the value of the parameter. A variable parameter 
must have a name, hence a variable parameter may not be specified only by its value. The rule 
governing the names of parameters is the same as that for module names. The value of a 
parameter may be complex double precision, complex single precision, double precision, real, 
integer or BCD. In the example given, the name of the first parameter is WTMASS, and its 
initial value (which can be overridden by a value on a PARAM card because of "Y" prior to the 
name) is 1.0. Note that the slash terminating the last parameter field is omitted. Although 
one can terminate the last parameter field with a slash, this final slash is usually omitted. 
A dollar sign, "$", terminates a DHAP statement. 

4. Input Data Blocks 

A short description of each of the module's input data blocks is given along with 
notes explaining what the module's design requires about the status (purged or not 
purged) of the data blocks. Detailed data block descriptions are found in section 2 
of the Programmer's Manual. 

5. Output Data Blocks 

A short description of each of the module's output data blocks and an explanation of 
the action taken when an output data block has been pre-purged are given in this 
section. An output data block is said to be pre-purged if the data block has been 



4.1-4 



GENERAL COMMENTS AND INDEXES 

explicitly purged in a previous PURGE DMAP instruction, or if the data block does not 
appear in the DMAP calling sequence for the module. 

6. Parameters 

The order of DMAP parameters in a DMAP calling sequence is the same as the order of the 
F0RTRAN variables corresponding to the parameters in blank common at module execution time. 
Each variable DMAP parameter is defined as whether a) it is input data into, or output 
data from, the module, or both (e.g., a DMAP loop counter which is incremented within the 
module); b) the type of the parameter: integer, real, double precision, complex single 
precision, complex double precision, or BCD; and c) the default value of the parameter 
as defined either i) in the Module Properties List (MPL) Executive table, ii) by means 
of a PARAM or SETVAL DMAP instruction, or iii) by means of the DMAP statement itself. An 
example of the third type of default value is 

M0DULEA A,B,C/D,E/V,N,UVU/V,Y.XYZ=-1 $. 

The parameter XYZ is set to -1 by the above statement. For further information on DMAP 
parameters see paragraph 3 above, section 2.4.2.2 in the Programmer's Manual and section 
5 of the User's Manual. 

7. Method 

A discussion of the method used by the module writer to achieve the purpose of the 
module is given in this section. 

8. Subroutines 

The subroutines which comprise the module are described in this section. However, 
not all subroutines capable of being called by a module are listed here. Utility 
routines and matrix routines that are in the root segment are not listed in this 
section. These inlcude: MAPFNS, all the GIN0 routines (0PEN, WRITE, CL0SE, READ, FWDREC, 
BCKREC, REWIND, E(aF, SKPFIL, XGIN0, GIN0, 0PNC0R), FREAD, G0PEN, WRTTRL, FNAME, CLSTAB, 
PREL0C, PEXIT, TMT0G0, MESA6E, and the matrix packing and unpacking routines (BLDPK, PACK, 
INTPK, UNPACK). Descriptions for these routines are found in section 3. 



4.1-5 



MODULE FUNCTIONAL DESCRIPTIONS 

9. Design Requirements 

Design requirements peculiar to the module are presented. 

10. Diagnostic Messages 

Diagnostic messages unique to the module are given in this section. A detailed list 
of NASTRAN diagnostic messages can be found in section 6 of the User's Manual. 



4.1-6 



GENERAL COMMENTS AND INDEXES 



4.1.2 Alphabetical Index of Module Functional Descriptions 



Section Number 


Module Name 


4.78 


ADD 


4.56 


CASE 


4.59 


CEAD 


4.10 


CHKPNT 


4.13 


C0ND 


4.67 


DDRl 


4.68 


DDR2 


4.81 


DEC0MP 


4.47 


DPD 


4.49 


DSMG1 


4.51 


DSMG2 


4.18 


END 


4.17 


EQUIV 


4.14 


EXIT 


4.82 


FBS 


4.61 


FRRD 


4.58 


GKAD 


4.66 


GKAM 


4.32 


GPSP 


4.29 


GPWG 


4.21 


GP1 


4.22 


GP2 


4.25 


GP3 


4.31 


GP4 


4.5 


IFP 


4.3 


IFP1 


4.6 


IFP3 


4.12 


JUMP 


4.72 


MATGPR 


4.71 


MATPRN 


4.73 


MATPRT 


4.33 


MCE1 


4.34 


MCE2 


4.84 


MERGE 


4.79 


MPYAD 


4.57 


MTRXIN 


4.70 


0FP 


4.19 


PARAM 


4.83 


PARTN 


4.52 


PLA1 


4.53 


PLA2 


4.54 


PLA3 


4.55 


PLA4 



Section Number 


Module Name 


4.24 


PL0T 


4.23 


PLTSET 


4.76 


PRTMSG 


4.77 


PRTPARM 


4.16 


PURGE 


4.64 


RAND0M 


4.37 


RBMG1 


4.38 


RBMG2 


4.39 


RBMG3 


4.40 


RBMG4 


4.48 


READ 


4.11 


REPT 


4.15 


SAVE 


4.35 


SCE1 


4.45 


SDRl 


4.46 


SDR2 


4.62 


SDR3 


4.74 


SEEMAT 


4.20 


SETVAL 


4.27 


SMA1 


4.28 


SMA2 


4.30 


SMA3 


4.86 


SMPYAD 


4.36 


SMP1 


4.50 


SMP2 


4.80 


S0LVE 


4.41 


SSG1 


4.42 


SSG2 


4.43 


SSG3 


4.44 


SSG4 


4.75 


TABPT 


4.26 


TAl 


4.65 


TRD 


4.85 


TRNSP 


4.8 


UMFEDIT 


4.60 


VDR 


4.2 


XCSA 


4.7 


XGPI 


4.9 


XSFA 


4.4 


XS0RT 


4.69 


XYPL0T 


4.63 


XYTRAN 



4.1-7 



MODULE FUNCTIONAL DESCRIPTIONS 



4.1.3 Alphabetical Index of Entry Points 1n Module Functional Descriptions 

Names listed under entry point which end in the characters "BD" are block data subprocirams , 



Section Number 


Entry Point 


Module Name 


Paqe Number 


4.46.8 


AI 


SDR2 


4.46-7 


4.46.8 


AJ 


SDR2 


4.46-7 


4.46.8 


AK 


SDR2 


4.46-7 


4.46.8 


AM 


SDR2 


4.46-7 


4.46.8 


AMATRX 


SDR2 


4.46-7 


4.48.8.25 


ARRM 


READ 


4.48-18 


4.41.11.37 


BAR 


SSGl 


4.41-27 


4.41.11.22 


BASGLB 


SSGl 


4.41-22 


4.46.8 


BINT 


SDR2 


4.46-7 


4.28.8.16 


BVISC 


SMA2 


4.28-8 


4.55.1 


CASE 


CASE 


4.56-1 


4.59.8.14 


CDETM 


CEAD 


4.59-12 


4.59.8.15 


CDETM2 


CEAD 


4.59-12 


4.59.8.19 


CDETM3 


CEAD 


4.59-14 


4.59.8.9 


COIFBS 


CEAD 


4.59-8 


4.59.8.18 


CDTFBS 


CEAD 


4.59-14 


4.59.1 


CEAD 


CEAD 


4.59-1 


4.59.8.1 


CEADIA 


CEAD 


4.59-3 


4.59.8.8 


CINFBS 


CEAD 


4.59-8 


4.59.8.2 


CINVPR 


CEAD 


4.59-3 


4.59.8.3 


CINVPl 


CEAD 


4.59-4 


4.59.8.4 


CINVP2 


CEAD 


4.59-4 


4.59.8.5 


CINVP3 


CEAD 


4.59-6 


4.59.8.10 


CMTIMU 


CEAD 


4.59-9 


4.59.8.6 


CN0RM 


CEAD 


4.59-7 


4.59.8.7 


CN0RM1 


CEAD 


4.59-7 


4.23.8.3 


CNSTRC 


PLTSET 


4.23-3 


4.46.8 


C0EF 


SDR2 


4.46-7 


4.41.11 .7 


C0MBIN 


SSGl 


4.41-17 


4.23.8.2 


C0MECT 


PLTSET 


4.23-3 


4.41.11.34 


C0NE 


SSGl 


4.41-26 


4.4.5.7 


CRDFLG 


XS0RT 


4.4-5 


4.41.11 .19 


CR0SS 


SSGl 


4.41-21 


4.59.8.17 


CSQRT 


CEAD 


4.59-13 


4.59.8.12 


CSUB 


CEAD 


4.59-10 


4.59.8.16 


CSUMM 


CEAD 


4.59-13 


4.59.8.11 


CXTRNY 


CEAD 


4.59-9 



4.1-8 



GENERAL COMMENTS AND INDEXES 



Section Number 


Entry Point 


Module Name 


Page Number 


4.78.1 


DADD 


ADD 


4,78-1 


4.49.8.6 


DBEAM 


DSMGl 


4.49-6 


4.49.8.10 


DC0NE 


DSMGl 


4.49-7 


4.81.1 


DDC0MP 


DEC0MP 


4.81-1 


4.67.1 


DDRl 


DDRl 


4.67-1 


4.68.1 


DDR2 


DDR2 


4,68-1 


4.68.8.1 


DDRl A 


DDRl 


4,68-4 


4.68.8.2 


DDRIB 


DDRl 


4.68-5 


4.27.8.5 


DFTCK 


SMAl 


4.27-9 


4.48.8.24 


DETDET 


READ 


4.48-17 


4.48.8.28 


DETFBS 


READ 


4.48-19 


4,48.8.15 


DETM 


READ 


4,48-13 


4.48.8.16 


DETMl 


READ 


4.48-15 


4.48.8.17 


DETM2 


READ 


4.48-16 


4.48.8.18 


DETM3 


READ 


4,48-16 


4.48.8,19 


DETM4 


READ 


4,48-16 


4.48.8,20 


DETM5 


READ 


4,48-16 


4,48,8,21 


DETM6 


READ 


4,48-16 


4,82,1 


DFBS 


FBS 


4,82-1 


4,41,11,9 


DIRECT 


SSGl 


4,41-18 


4,27.8,27 


DKEF 


SMAl 


4,27-16 


4,27,8,22 


OKI 


SMAl 


4.27-13 


4,27.8,25 


DKINT 


SMAl 


4,27-14 


4.27,8,26 


DKJ 


SMAl 


4,27-15 


4,27.8.31 


DKJAB 


SMAl 


4,27-17 


4,27.8.23 


DKK 


SMAl 


4.27-14 


4.27.8,24 


DKM 


SMAl 


4.27-14 


4,27,8,29 


DKIOO 


SMAl 


4.27-16 


4,27,8,33 


DK211 


SMAl 


4.27-18 


4.27,8.32 


DK219 


SMAl 


4.27-18 


4.27.8.28 


DK89 


SMAl 


4,27-16 


4.27.8.38 


DMATRX 


SMA2 


4,27-21 


4.28.8 


DMEF 


SMA2 


4.28-3 


4,28,8 


DM I 


SMA2 


4,28-3 


4,28,8 


DM I NT 


SMA2 


4,28-3 


4,28,8 


DMJ 


SMA2 


4,28-3 


4,28.8 


DMJAB 


SMA2 


4,28-3 


4,28.8 


DMK 


SMA2 


4,28-3 


4.28.8 


DMM 


SMA2 


4.28-3 


4.79.1 


DMPYAD 


MPYAD 


4.79-1 


4.28.8 


DM100 


SMA2 


4.28-3 



4.1-9 (12-1-69) 



MODULE FUNCTIONAL DESCRIPTIONS 



Section Number 


Entry Point 


Module Name 


Page Number 


4.28.8 


DM211 


SMA2 


4,28-3 


4.28,8 


DM219 


SMA2 


4,28-3 


4.28.8 


DM89 


SMA2 


4.28-3 


4.47.1 


DPD 


DPD 


4.47-1 


4.47.8.1 


DPDAA 


DPD 


4.47-7 


4.47.9.2 


DPDCBD 


DPD 


4.47-8 


4.47.7.1 


DPDl 


DPD 


4.47-3 


4.47.7.1 


DPD2 


DPD 


4.47-3 


4.47.7.1 


DPD3 


DPD 


4.47-3 


4.47.7.1 


DPD4 


DPD 


4.47-3 


4.47.7.1 


DPD5 


DPD 


4.47-3 


4.24.1 


DPL0T 


PL0T 


4.24-1 


4.23.1 


DPLTST 


PLTSET 


4.23-1 


4.49.8.9 


DQDMEM 


DSMGl 


4.49-7 


4.24.8,6 


DRAW 


PL0T 


4.24-7 


4.49.8.5 


DR0D 


DSMGl 


4.49-6 


4.49.8.7 


DSHEAR 


DSMGl 


4.49-6 


4.49.1 


DSMGl 


DSMGl 


4.49-1 


4.51.1 


DSMG2 


DSMG2 


4.51-1 


4.49,8,1 


DS1 


DSMGl 


4.49-5 


4,49,8.2 


DS1A 


DMSGl 


4.49-5 


4,49,8.4 


DS1ABD 


DSMGl 


4.49-6 


4,49.8.3 


DS1B 


DSMGl 


4.49-5 


4.85.1 


DTRANP 


TRNSP 


4.85-1 


4.49.8.8 


DTRMEM 


DSMGl 


4.49-7 


4.27.8.35 


D4K 


SMA1 


4.27-19 


4.27,8,36 


D5K 


SMA1 


4.27-20 


4.27,8,37 


D6K 


SMA1 


4.27-20 


4.24.8.11 


DVECTR 


PL0T 


4.24-10 


4.48,8,23 


EADD 


READ 


4.48-17 


4,23,9,2 


EDESBD 


PLTSET 


4.23-5 


4.41.11.4 


EDTL 


SSGl 


4,41-16 


4.24.8.16 


ELELBL 


PL0T 


4.24.12a 


4.48,8,36 


EMPC0R 


READ 


4.48-19C 


4.41.11.2 


EXTERN 


SSGl 


4.41-14 


4.4.5,8 


EXTINT 


XS0RT 


4.4-5 


4,41,11,33 


FCURL 


SDR2 


4.41-26 


4,41,11.26 


FDCSTM 


SSGl 


4.41-23 


4.48,8.22 


FDVECT 


READ 


4.48-17 


4.41.11,28 


FEDT 


SSGl 


4.41-24 


4.46.8 


FFIOO 


SDR2 


4.46-7 



4,1-10 (12-1-69) 



GENERAL COMMENTS AND INDEXES 



Section Number 


Entry Point 


Module Name 


Page Number 


4.41.11.27 


FGPTT 


SSGl 


4.41-24 


4.48.8.37 


FILCiaR 


READ 


4.48-19d 


4.24.8.2 


FIND 


PL0T 


4.24-4 


4.46.8 


FJAB 


SDR2 


4.46-7 


4.41.11.18 


FKDPNT 


SSGl 


4.41-21 


4.24.8.12 


FNDSET 


PL0T 


4.24-10 


4.41.11.21 


FNDSIL 


SSGl 


4.41-22 


4.65.8.5 


FiSRMl 


TRD 


4.65-14 


4.41.11.11 


FP0NT 


SSGl 


4.41-19 


4.61.1 


FRRD 


FRRD 


4.61-1 


4.61.8.1 


FRRDIA 


FRRD 


4.61-5 


4.61.8.2 


FRRD IB 


FRRD 


4.61-6 


4.61.8.3 


FRRDIC 


FRRD 


4.61-6 


4.61.8.4 


FRRDID 


FRRD 


4.61-6 


4.61.8.5 


FRRDIE 


FRRD 


4.61-7 


4.61.8.6 


FRRD IF 


FRRD 


4.61-7 


4.46.8 


F4 


SDR2 


4.46-7 


4.46.8 


F5 


SDR2 


4.46-7 


4.46.8 


F6 


SDR2 


4.46-7 


4.46.8 


F6211 


SDR2 


4.46-7 


4.46.8 


F6219 


SDR2 


4.46-7 


4.46.8 


F89 


SDR2 


4.46-7 


4.24.8.4 


6ETDEF 


PL0T 


4,24-6 


4.58.1 


GKAD 


GKAD 


4.58-1 


4.58.8.1 


GKADIA 


GKAD 


4.58-6 


4.58.8.2 


GKADIB 


GKAD 


4.58-6 


4.58.8.3 


GKADIC 


GKAD 


4.58-7 


4.58.8.4 


GKAD ID 


GKAD 


4.58-7 


4.66.1 


GKAM 


GKAM 


4.66-1 


4.66.8.2 


GKAMIA 


GKAM 


4,66-4 


4.66.8.1 


GKAMIB 


GKAM 


4.66-3 


4.41.11.23 


GLBBAS 


SSGl 


4.41-22 


4.32.1 


GPSP 


GPSP 


4.32-1 


4.24.8.10 


GPTLBL 


PL0T 


4.24-9 


4.24.8.9 


GPTSYM 


PL0T 


4.24-9 


4.29.1 


GPWG 


GPWG 


4.29-1 


4.29.8.1 


GPIJGIA 


GPWG 


4.29-5 


4.29.8.2 


GPWGIB 


GPWG 


4.29-5 


4.29.8.3 


GPWGIC 


GPWG 


4.29-6 


4.21.1 


GPl 


GPl 


4.21-1 


4.22.1 


GP2 


GP2 


4.22-1 


4.25.1 


GP3 


GP3 


4.25-2 



4.1-11 (12-1-69) 



MODULE FUNCTIONAL DESCRIPTIONS 



Section Number 


Entry Point 


Module Name 


Page Number 


4.25.8.3 


GP3A 


GP3 


4.25-4 


4.25.8.4 


GP3B 


GP3 


4.25-7 


4.25.8.2 


GP3C 


GP3 


4.25-2 


4.31.1 


GP4 


GP4 


4.31-1 


4.41.11.16 


GRAV 


SSGl 


4.41-20 


4.41.11.5 


GRAVLl 


SSGl 


4.41-16 


4.41.11.6 


GRAVL2 


SSGl 


4.41-16 


4.41.11.29 


GRAVL3 


SSGl 


4.41-24 


4.46.8 


IFAC 


SDR2 


4,46-7 


4.5.1 


IFP 


IFP 


4,5-1 


4.5,7.9 


IFPPK.IFPPKI, 


.IFPPKN IFP 


4.5-7 


4.3.1 


IFPl 


IFPl 


4.3-1 


4.3.7.1 


IFPIB 


IFPl 


4.3-2 


4.3.7.2 


IFPIC 


IFPl 


4.3-3 


4.3.7.3 


IFPID 


IFPl 


4.3-4 


4.3.7.4 


IFPIE 


IFPl 


4.3-4 


4.3.7.5 


IFPIF 


IFPl 


4.3-4 


4.3.7.6 


IFPIG 


IFPl 


4.3-5 


4.3.7.8 


IFPIXY 


IFPl 


4.3-6 


4,6.1 


IFP3 


IFP3 


4.6-1 


4.6.8,1 


IFP3B 


IFP3 


4.6-15 


4.5,7,8 


IFS1P 


IFP 


4.5-6 


4.5.7.8 


IFS2P 


IFP 


4.5-6 


4.5.7.8 


IFS3P 


IFP 


4.5-6 


4.5.7.8 


IFS4P 


IFF 


4,5-6 


4.5.7.1 


IFXIBD 


IFP 


4,5-5 


4.5.7,2 


IFX2BD 


IFP 


4,5-5 


4,5.7.3 


IFX3BD 


IFP 


4,5-5 


4.5.7.4 


IFX4BD 


IFP 


4.5-6 


4.5.7,5 


IFX5BD 


IFP 


4,5-6 


4,5,7,6 


IFX6BD 


IFP 


4.5-6 


4,5,7.7 


IFX7BD 


IFP 


4.5-6 


4.4,5,3 


INITC0 


XS0RT 


4.4-4 


4.65,8,3 


INITL 


TRD 


4.65-13 


4,4.5.9 


INTEXT 


XS0RT 


4.4-5 


4,65.8,8 


INTFBS 


TRD 


4.65-15 


4.24,8,7 


INTVEC 


PL0T 


4.24-8 


4,48,8.40 


INVERT 


READ 


4.48-19e 


4.48.8.14 


INVFBS 


READ 


4.48-12 


4.48.8,6 


INVPWR 


READ 


4.48-8 


4.48.8.7 


INVPl 


READ 


4.48-8 



4,1-12 (12-1-69) 



GENERAL COMMENTS AND INDEXES 



Section Number 


Entry Point 


Module Name 


Page Number 


4.48.8.8 


INVP2 


READ 


4.48-9 


4.48.8.9 


INVP3 


READ 


4.48-9 


4.48.8.41 


INVTR 


READ 


4.48. 19f 


4.4.5.11 


ISFT 


XS0RT 


4.4-6 


4.27.8.7 


KBAR 


SMAl 


4.27-10 


4.27.8.17 


KBEAM 


SMAl 


4.27-12 


4.27.8.18 


KC0NE 


SMAl 


4.27-13 


4.27.8.16 


KELAS 


SMAl 


4.27-12 


4.27.8.30 


KFAC 


SMAl 


4.27-17 


4.27.8.9 


KPANEL 


SMAl 


4.27-10 


4.27.8.11 


KQDMEM 


SMAl 


4.27-11 


4.27.8.14 


KQDPLT 


SMAl 


4.27-12 


4.27.8.6 


KR0D 


SMAl 


4.27-10 


4.27.8.21 


KT0RDR 


SMAl 


4.27-13 


4.27.8.20 


KTRAPR 


SMAl 


4.27-13 


4.27.8.12 


KTRBSC 


SMAl 


4.27-11 


4.27.8.15 


KTRIQO 


SMAl 


4.27-12 


4.27.8.19 


KTRIRG 


SMAl 


4.27-13 


4.27.8.10 


KTRMEM 


SMAl 


4.27-11 


4.27.8.13 


KTRPLT 


SMAl 


4.27-11 


4.27.8.8 


KTUBE 


SMAl 


4.27-10 


4,2.5.2 


LDi 


XCSA 


4.2-2 


4.2.5.3 


LiBD.LiABD 


XCSA 


4.2-2 


4.41.11.8 


L0ADX 


SSGl 


4.41-17 


4.46.8.36 


MAGPHA 


SDR2 


4.46-19 


4.28.8.12 


MASSD 


SMA2 


4.28-7 


4.28.8.7 


MASSTQ 


SMA2 


4.28-5 


4.72.1 


MAT6PR 


MATGPR 


4.72-1 


4.71.1 


MATPRN 


MATPRN 


4.71-1 


4.65.8.6 


MATVEC 


TRD 


4.65-14 


4.28.8.8 


MBAR 


SMA2 


4.28-6 


4.28.8.17 


MBEAM 


SMA2 


4.28-8 


4.28.8.9 


MCBAR 


SMA2 


4.28-6 


4.33.1 


MCEl 


MCEl 


4.33-1 


4.33.8.1 


MCEIA 


MCEl 


4.33-2 


4.33.8.2 


MCEIB 


MCEl 


4.33-2 


4.33.7 


MCEIC 


MCEl 


4.33-2 


4.33.8.3 


MCEID 


MCEl 


4.33-2 


4.34.1 


MCE2 


MCE2 


4.34-1 


4,28.8.11 


MC0NE 


S.MA2 


4.28-6 


4.28.8.10 


MC0NMX 


SMA2 


4.28-6 


4.28.8.18 


MCR0D 


SMA2 


4.28-8 



4.1-13 (12-1-69) 



MODULE FUNCTIONAL DESCRIPTIONS 



Section Number 


Entry Point 


Module Name 


Page Number 


4.84.1 


MERGEX 


MERGE 


4.84-1 


4.28.8 


MFAC 


SMA2 


4.28-3 


4.24.8.13 


MINMAX 


PL0T 


4.24-n 


4.41.11.24 


MPYL 


SSGl 


4.41.23 


4.41.11.25 


MPYLT 


SSGl 


4.41-23 


4.28.8.21 


MQDPLT 


SMA2 


4.28-8a 


4.28.8.5 


MR0D 


SMA2 


4.28-5 


4.48.8.11 


MTIMSU 


READ 


4.48-10 


4.28.8.15 


MT0RDR 


SMA2 


4.28-7 


4.28.8.14 


MTRAPR 


SMA2 


4.28-7 


4.28.8.19 


MTRBSC 


SMA2 


4.28-8 


4.28.8.22 


MTRIQD 


SMA2 


4.28-8a 


4.28.8.13 


MTRIRG 


SMA2 


4.28-7 


4.28.8.20 


MTRPLT 


SMA2 


4.28-8a 


4.57.1 


MTRXIN 


MTRXIN 


4.57-1 


4.28,8.6 


MTUBE 


SMA2 


4.28-5 


4.41.11.20 


N0RM 


SSGl 


4.41-21 


4.48.8.10 


N!3RM1 


READ 


4.48-10 


4.70.1 


(3FP 


0FP 


4.70-1 


4.70.8.1 


0FPPUN 


0FP 


4.70-2 


4.70.8.2 


(2FP1 


0FP 


4.70-3 


4.70.8.3 


0FP1A 


0FP 


4.70-3 


4.70.8.4 


0FP1BD 


0FP 


4.70-3 


4,70.8.5 


!3FP2BD 


0FP 


4.70-3 


4.70.8.6 


0FP3BD 


0FP 


4.70-3 


4.70.8.7 


0FP4BD 


0FP 


4.70-3 


4.70.8.8 


0FP5BD 


0FP 


4.70-3 


4.48.8.5 


0RTCK 


READ 


4.48-7 


4.59.8.13 


0RTH0 


CEAD 


4.59-10 


4.7.5.10 


0SCDMP 


XGPI 


4.7-6 


4.24.8.1 


PARAM 


PL0T 


4.24-4 


4.83.1 


PARTNX 


PARTN 


4.83-1 


4.41.11.17 


PERMUT 


SSGl 


4. 41-20 


4.24.8.14 


PERPEC 


PL0T 


4.24-11 


4.55.8.5 


PKBAR 


PLA4 


4.55-4 


4.55.8.10 


PKQADl 


PLA4 


4.55-5 


4.55.8.11 


PKQAD2 


PLA4 


4.55-5 


4.55.8.7 


PKQDM 


PLA4 


4.55-5 


4.55.8.18 


PKQDMS 


PLA4 


4.55-7 


4.55,8.13 


PKQDM 1 


PLA4 


4.55-6 


4.55.8.22 


PKQDPL 


PLA4 


4.55-8 


4.55.8.4 


PKR0D 


PLA4 


4.55-4 



4.1-14 (12-1-69) 



GENERAL COMMENTS AND INDEXES 



Section Number 


Entry Point 


Module Name 


Page Number 


4.55.8.14 


PKTQl 


PLA4 


4,55-6 


4.55.8.16 


PKTQ2 


PLA4 


4,55-7 


4.55.8.20 


PKTRBS 


PLA4 


4,55-8 


4.55.8.8 


PKTRIl 


PLA4 


4,55-5 


4.55.8.9 


PKTRI2 


PLA4 


4.55-5 


4.55.8.6 


PKTRM 


PLA4 


4.55-4 


4,55.8.17 


PKTRMS 


PLA4 


4.55-7 


4.55.8.12 


PKTRMl 


PLA4 


4.55-6 


4.55.8.21 


PKTRPL 


PLA4 


4.55-8 


4.55.8.19 


PKTRQD 


PLA4 


4.55-7 


4.55.8.15 


PKTRQ2 


PLA4 


4.55-6 


4.52.1 


PLAl 


PLAl 


4.52-1 


4.53.1 


PLA2 


PLA2 


4.53-1 


4.54.1 


PLA3 


PLA3 


4.54-1 


4.54.8.1 


PLA31 


PL A3 


4.54-3 


4.54.8.2 


PLA32 


PLA3 


4.54-3 


4.55.1 


PLA4 


PLA4 


4.55-1 


4.55.8.3 


PLA4B 


PLA4 


4.55-4 


4.55.8.1 


PLA41 


PLA4 


4.55-3 


4.55.8.2 


PLA42 


PLA4 


4.55-3 


4.41.11.13 


PL0AD 


SSGl 


4.41-9 


4.24.8.3 


PLOT 


PL0T 


4,24-5 


4.24.8.5 


PLT0PR 


PL0T 


4,24-6 


4.41.11.15 


PRESAX 


SSGl 


4,41-20 


4.24.8.15 


PR0CES 


PL0T 


4.24-12 


4.76.1 


PRTMSG 


PRTMSG 


4.76-1 


4.77,1 


PRTPRM 


PRTPRM 


4.77-1 


4.54.8.4 


PSBAR 


PLA3 


4.54-4 


4,54,8,9 


PSQADl 


PLA3 


4.54-5 


4,54,8,10 


PSQAD2 


PLA3 


4.54-5 


4.54.8,6 


PSQDM 


PLA3 


4.54-4 


4.54.8.12 


PSQDMl 


PLA3 


4.54-6 


4.54.8,16 


PSQPLl 


PLA3 


4.54-7 


4,54,8,3 


PSR0D 


PLA3 


4.54-3 


4.54,8,15 


PSTPLl 


PLA3 


4,54-6 


4,54.8,13 


PSTQl 


PLA3 


4,54-6 


4.54.8,18 


PSTQ2 


PLA3 


4.54-7 


4,54,8,14 


PSTRBl 


PLA3 


4,54-6 


4,54,8,7 


PSTRIl 


PLA3 


4.54-5 


4.54.8,8 


PSTRI2 


PLA3 


4.54-5 


4,54.8,17 


PSTRQ2 


PLA3 


4.54-7 


4,54,8,5 


PSTRM 


PLA3 


4.54-4 


4.54,8,11 


PSTRMl 


PLA3 


4.54-5 



4.1-15 (12-1-69) 



MODULE FUNCTIONAL DESCRIPTIONS 



Section Number 


Entry Point 


Module Name 


Page Number 
4.41-27 


4. 41. n. 35 


QDHEM 


SS61 


4.19.1 


qPARAM 


PARAM 


4.19-1 


4.48.8.38 


QRITER 


READ 


4.48-19d 


4.64.1 


RAND0M 


RAND0M 


4.64-1 


4.64.8.4 


RANOl 


RAND0M 


4.64-6 


4.64.8.5 


RAND2 


RAND0M 


4.64-6 


4.64.8.6 


RAND3 


RAND0M 


4.64-7 


4.64.8.7 


RAND4 


RAND0M 


4.64-7 


4.64.8.2 


RAND5 


RAND0M 


4.64-6 


4.64.8.8 


RAND6 


RAND0M 


4.64-7 


4.64.8.1 


RAN07 


RAND0M 


4.64-5 


4.64.8.3 


RAND8 


RAND0M 


4.64-4 


4.37.1 


RBMGl 


RBMGl 


4.37-1 


4.38.1 


RBMG2 


RBMG2 


4.38-1 


4.39.1 


RBMG3 


RBMG3 


4.39-1 


4.40.1 


RBMG4 


RBMG4 


4.40-1 


4.48.8.1 


READl 


READ 


4.48-4 


4.48.8.2 


READ2 


READ 


4.48-5 


4.48.8.3 


READ3 


READ 


4.48-6 


4.48.8.4 


READ4 


READ 


4.48-7 


4.48.8.42 


READ6 


READ 


4.48-19f 


4.48.1 


REI6 


READ 


4.48-1 


4.41.11.14 


RF0RCE 


SS61 


4.41-19 


4.27.8.34 


R0MBDK 


SMAl 


4.27-19 


4.46.8 


R0MBER 


SDR2 


4.46-7 


4.48.8.35 


R0TATE 


READ 


4.48-19C 


4.48.8.34 


R(i)TAX 


READ 


4.48-19C 


4.4.5.2 


RPAGE 


XS0RT 


4.4-3 


4.46.8.15 


SBAR1 


SDR2 


4.46-12 


4,46.8.32 


SBAR2 


SDR2 


4.46-18 


4.46.8.5 


SBEAMl 


SDR2 


4.46-10 


4.46.8.24 


SBEAM2 


SDR2 


4.46-16 


4.46.8.27 


SBSPL2 


SDR2 


4.46-16 


4.35.1 


SCEl 


SCEl 


4.35-1 


4.46.8.16 


SCBINEl 


SDR2 


4.46-12 


4.46.8.30 


SC0NE2 


SDR2 


4.46-17 


4.46.8.31 


SC0NE3 


SDR2 


4.46-18 


4.45.1 


SDRl 


SDRl 


4.45-1 


4.45.8.1 


SDRIA 


SDRl 


4.45-5 


4.45.8.2 


SDRIC 


SDRl 


4.45-5 


4.45.8.3 


SDRID 


SDRl 


4.45-5 


4.46.1 


SDR2 


SDR2 


4.46-1 



4.1-16 (12-1-69) 



GENERAL COMMENTS AND INDEXES 



Section Number 


Entry Point 


Module Name 


Page Number 


4.46.8.2 


SDR2A 


SDR2 


4.46-8 


4.46.8.1 


SDR2AA 


SDR2 


4.46-8 


4.46.8.3 


SDR2B 


SDR2 


4.46-9 


4.46.8.20 


SDR2C 


SDR2 


4.46-13 


4.46.8.21 


SDR2D 


SDR2 


4.46-14 


4.46.8.22 


SDR2E 


SDR2 


4.46-15 


4.62.1 


SDR3 


SDR3 


4.62-1 


4.62.8.1 


SDR3A 


SDR3 


4.62-9 


4.74.1 


SEEMAT 


SEEMAT 


4.74-1 


4.46.8.13 


SELASl 


SDR2 


4.46-12 


4.46.8.26 


SELAS2 


S0R2 


4.46-16 


4.23.8.1 


SETINP 


PLTSET 


4.23-3 


4.20.1 


SETVAL 


SETVAL 


4.20-1 


4.24.8.8 


SHAPE 


PL0T 


4.24-8 


4.48.8.32 


SIC0X 


READ 


4.48-19b 


4.48.8.33 


SINCAS 


READ 


4.48-19b 


4.41.11.12 


SL0AD 


SSGl 


4.41-19 


4.27.1 


SMAl 


SMAl 


4.27-1 


4.27.8.2 


SMAIA 


SMAl 


4.27-8 


4.27.8.3 


SMAIB 


SMAl 


4.27-9 


4.27.8.4 


SMAIBD 


SMAl 


4.27-9 


4.28.1 


SMA2 


SMA2 


4.28-1 


4.28.8.2 


SMA2A 


SMA2 


4.28-4 


4.28.8.3 


SMA2B 


SMA2 


4.28-4 


4.28.8.4 


SMA2BD 


SMA2 


4.28-4 


4.30.1 


SMA3 


SMA3 


4.30-1 


4.30.8.1 


SMA3A 


SMA3 


4.30-5 


4.30.8.2 


SMA3B 


SMA3 


4.30-5 


4.30.8.4 


SMA3BD 


SMA3 


4.30-6 


4.30.8.3 


SMA3C 


SMA3 


4.30-6 


4.48.8.30 


SMLEIG 


READ 


4.48-19a 


4.36.1 


SMPl 


SMPl 


4.36-1 


4.50.1 


SMP2 


SMP2 


4.50-1 


4.80.1 


S0LVE 


S(JLVE 


4.80-1 


4.46.8.7 


SPANLl 


SDR2 


4.46-10 


4.46.8.25 


SPANL2 


SDR2 


4.46-16 


4.46.8.12 


SQDMEl 


SDR2 


4.46-11 


4.46.8.10 


SQDPLl 


SDR2 


4.46-11 


4.46.8.27 


SQRTM 


READ 


4.48-19 


4.46.8.4 


SR(301 


SDR2 


4.46-10 


4.46.8.23 


SR0D2 


SDR2 


4.46-16 



4.1-17 (12-1-69) 



MODULE FUNCTIOMAL DESCRIPTIONS 



Section Number 


Entry Point 


Module Name 


Page Number 


4.41.1 


SSGl 


SSGl 


4.41-1 


4.41.11.1 


SSGIA 


SSGl 


4.41-14 


4.42.1 


SSG2 


SSG2 


4.42-1 


4.42.8.1 


SSG2B1 


SSG2 


4.42-4 


4.43.1 


SSG3 


SSG3 


4.43-1 


4.44.1 


SSG4 


SSG4 


4.44-1 


4.65.8.7 


STEP 


TRD 


4.65-15 


4.46.8.19 


ST0RD1 


SDR2 


4.46-13 


4.46.8.35 


ST(JRD2 


SDR2 


4.46-19 


4.46.8.28 


STQME2 


SDR2 


4.46-17 


4.46.8.18 


STRAP 1 


SDR2 


4.46-13 


4.46.8.34 


STRAP2 


SDR2 


4.46-18 


4.46.8.8 


STRBSl 


SDR2 


4.46-10 


4.46.8.17 


STRIRl 


SDR2 


4.46-13 


4.46.8.33 


STRIR2 


SDR2 


4.46-18 


4.46.8.11 


STRMEl 


SDR2 


4.46-11 


4.46,8.9 


STRPLl 


SDR2 


4.46-11 


4.46.8.14 


STRQDl 


SDR2 


4.46-12 


4.46.8.29 


STRQD2 


SDR2 


4.46-17 


4.46.8.6 


STUBEl 


SDR2 


4.46-10 


4.48.8.13 


SUB 


READ 


4.48-11 


4.48.8.26 


SUMM 


READ 


4.48-18 


4.3.7.7 


SWSRT 


IFPl 


4.3-6 


4.75.1 


TABPT 


TABPT 


4.75-1 


4.26.1 


TAl 


TAl 


4.26-1 


4.26.8.2 


TAIA 


TAl 


4.26-14 


4.26.8.3 


TAIB 


TAl 


4.26-14 


4.26.8.4 


TAIC 


TAl 


4.26-14 


4.26.8.5 


TAICA 


TAl 


4.26-15 


4.26.8.6 


TAIF 


TAl 


4.26-15 


4.26.8.7 


TAIG 


TAl 


4.26-15 


4.41.11.3 


TEMPI 


SSGl 


4.41-15 


4.41.11.10 


TP0NT 


SSGl 


4.41-18 


4.65.1 


TRD 


TRD 


4.65-1 


4.65.8.1 


TRDIA 


TRD 


4.65-12 


4.65.8.2 


TRD IB 


TRD 


4.65-12 


4.65.8.4 


TRDIC 


TRD 


4.65-13 


4.65.8.9 


TRDID 


TRD 


4.65-16 


4.65.8.10 


TRDIE 


TRD 


4.65-16 


4.48.8.31 


TRIDI 


READ 


4.48-19a 


4.41.11.36 


TRIMEM 


SSGl 


4.41-27 



4.1-18 (12-1-69) 



GENERAL COMMENTS AND INDEXES 



Section Number 


Entry Point 


Module Name 


Page Number 


4.85.1 


TRNSP 


TRNSP 


4.85-1 


4.41.11.32 


TT0RDR 


SSGl 


4.41-26 


4.41.11.31 


TTRAPR 


SSGl 


4.41-25 


4.41.11.30 


TTRIRG 


SSGl 


4.41-25 


4.8.1 


UMFEDT 


UMFEDIT 


4.8-1 


4.8.6 


UMFZBD 


UMFEDIT 


4.8-1 


4.48.8.29 


VALVEC 


READ 


4.48-19 


4.60.8.1 


VDR 


VDR 


4.60-5 


4.60.8.2 


VDRA 


VDR 


4.60-5 


4.60.8.3 


VDRB 


VDR 


4.60-6 


4.60.9.2 


VDRBD 


VDR 


4.60-7 


4.48.8.39 


WILVEC 


READ 


4.48-19e 


4.76.8.2 


WRTMSG 


PRTMSG 


4.76-2 


4.4.5.5 


XBCDBI 


XS0RT 


4.4-4 


4.11.1 


XCEI 


REPT 


4.11-1 


4.12.1 


XCEI 


JUMP 


4.12-1 


4.13.1 


XCEI 


COND 


4.13-1 


4.14.1 


XCEI 


EXIT 


4.14-1 


4.18.1 


XCEI 


END 


4.18-1 


4.10.1 


XCHK 


XCHK 


4.10-1 


4.9.5.2 


XCLEAN 


XSFA 


4.9-4 


4.2.1 


XCSA 


XCSA 


4.2-1 


4.9.5.4 


XDPH 


XSFA 


4.9-6 


4.17.1 


XEQUIV 


EQUIV 


4.17-1 


4.4.5.4 


XFADJ 


XS0RT 


4.4-4 


4.4.5.10 


XFADJl 


XS0RT 


4.4-5 


4.9.5.7 


XFILPS 


XSFA 


4.9-7 


4.7.5.9 


XFLDEF 


XGPI 


4.7-5 


4.7.5.8 


XFL0RD 


XGPI 


4.7-5 


4.7.1 


XGPI 


XGPI 


4.7-1 


4.7.6.2 


XGPIBD 


XGPI 


4.7-7 


4.7.5.2 


XGPIBS 


XGPI 


4.7-3 


4.7.5.1 


XGPIDG 


XGPI 


4.7-3 


4.7.5.1 


XGPIMW 


XGPI 


4.7-3 


4.7.5.5 


XIPFL 


XGPI 


4.7-4 


4.7.5.4 


XLNKHD 


XGPI 


4.7-4 


4.7.5.5 


X0PFL 


XGPI 


4.7-4 


4.7.5.3 


X0SGEN 


XGPI 


4.7-3 


4.7.5.6 


XPARAM 


XGPI 


4.7-4 


4.9.5.6 


XPLEQK 


XSFA 


4.9-6 


4.9.5.5 


XP0LCK 


XSFA 


4.9-6 



4.1-19 (12-1-69) 



MODULE FUNCTIONAL DESCRIPTIONS 



Section Number 


Entry Point 


Module Name 


Page Number 


4.4.5.6 


XPRETY 


XS0RT 


4.4-4 


4,9.5.3 


XPUNP 


XSFA 


4.9-5 


4.16.1 


XPURGE 


XPURGE 


4.16-1 


4.4.5.1 


XRECPS 


XS0RT 


4.4-3 


4.2.5.1 


XRGDFM 


XCSA 


4.2-1 


4.15.1 


XSAVE 


XSAVE 


4.15-1 


4.2.5.4 


XSBSET 


XCSA 


4.2-2 


4.7.5.7 


XSCNDM 


XGPI 


4.7-4 


4.9.1 


XSFA 


XSFA 


4.9-1 


4.4.1 


XS0RT 


XS0RT 


4.4-1 


4.9.5.1 


XS0SGN 


XSFA 


4.9-3 


4.48.8.12 


XTRNSY 


READ 


4.48-11 


4.63.8.1 


XYDUMP 


XYTRAN 


4.63-5 


4.63.8.2 


XYFIND 


XYTRAN 


4.63-5 


4.63.8.4 


XYL0G 


XYTRAN 


4.63-6 


4.63.8.3 


XY0UT 


XYTRAN 


4.63-6 


4.69.1 


XYPL0T 


XYPL0T 


4.69-1 


4.63.8.5 


XYTICS 


XYTRAN 


4.63-7 


4.63.1 


XYTRAN 


XYTRAN 


4.63-1 



4.1-20 (12-1-69) 



EXECUTIVE PREFACE MODULE XCSA (EXECUTIVE CONTROL SECTION ANALYSIS) 

4.2 EXECUTIVE PREFACE MODULE XCSA (EXECUTIVE CONTROL SECTION ANALYSIS) 

4.2.1 Entry Point : XCSA 

4.2.2 Purpose 

To process the NASTRAN Executive Control Deck. 

4.2.3 Call ing Sequence 

CALL XCSA. XCSA is called only by subroutine SEMINT. 

4.2.4 Method 

The cards of the Executive Control Deck are read and processed with checks being made for 
illegal formats, duplication and errors peculiar to the particular card being processed. When 
all of the control cards have been processed (i.e., CEND control card found), the Executive 
Control Table (XCSA) is written on the Problem Tape and XCSA returns to the calling routine. 

4.2.5 Subroutines 

4.2.5.1 Subroutine Name: XRGDFM 

1. Entry Point: XRGDFM 

2. Purpose: To select a rigid format based on the S0L card in the Executive Control Deck. 

3. railing Sequence: CALL XRGDFM (NEWS0L,0LDS0L,IAPP) 

NEWS(3L - Two-word array containing solution and subset numbers taken from S0L 
control card. 

(ilLDS0L - Two-word array containing solution and subset numbers taken from the 

Old Problem Tape if the problem is a restart. If not a restart, 0LDS0L = 0. 

lAPP - Approach code (1 = F0RCE, 2 = DISPL, 3 = DMAP) taken from the APP card 
in the Executive Control Deck. 

4. Method: If the problem is being restarted, a check is made for a solution (Rinid 
Format) change. If the solution has been changed, a bit is set in table MEDMSK in 
named common block /XMDMSK/. 



4.2-1 



MODULE FUNCTIONAL DESCRIPTIONS 

A check is made for a legal solution number, and, if acceptable, a branch is made 
on the solution number, and subroutine LDi (i = solution number) is called to create the 
DMAP and MED records for the XCSA table. XRGDFM then returns to the calling routine XCSA. 

4.2.5.2 Subroutine Name: LDi, where i = solution number, i = 01, 02, .,., 12. 

1, Entry Point: LDi 

2, Purpose: To write the DMAP sequence and MED records of the XCSA Executive Table for 
solution (Rigid Format) i (see XCSA Executive Control Table description, section 2.4.2.5), 

3, Calling Sequence: CALL LDi (SUBSET) 

SUBSET - Solution subset number from the S0L control card. 

4, Method: The packed DMAP program is generated, and then subroutine XSBSET is called to 
select the proper solution subset for the DMAP proaram by altering the ISl array. Uoon 
return from XSBSET the arrays ISl, JNM and INM (see 4.2,6,2 below) are written on the New 
Problem Tape to complete the MED record for Executive Table XCSA. LDi then returns to 
calling routine, 

5, Restrictions: Due to restrictions imposed by various FORTRAN compilers, lengthy Rigid 
Formats (e.g., Piecewise Linear Analysis (i » 06), Direct Complex Eigenvalue Analysis (i = 08) 
have required auxiliary subroutines (e.g., L061 auxiliary to LD06 and L081 auxiliary to LD08, 
see section 4.2.5.3) to contain the Rigid Format. 

4.2.5.3 Block Data Subprograms LiBD and LiABD 

Associated with each LDi subroutine are the block data programs LiBD and LiABD for i = 01 , 

02 12, While the LDi subroutine contains the i Rigid Format in F0RTRAN DATA statements, 

the LiBD block data subprogram contains bit numbers for the Card Name Restart Table and bit 
numbers for the File Name Restart Table for the i*^ Rigid Format, and the LiABD block data sub- 
program contains the general Restart Tables for the i Rigid Format, 

4.2.5.4 Subroutine Name: XSBSET 

1, Entry Point: XSBSET 

2. Purpose: To eliminate DMAP instructions not belonging to the specified subset by 
altering the ISl array, 

4.2-2 



EXECUTIVE PREFACE MODULE XCSA (EXECUTIVE CONTROL SECTION ANALYSIS) 

3. Calling Sequence: CALL XSBSET (IDl ,NSS, SUBSET, ISl ,NDI,NWPI) 

IDl - Table containing DMAP instruction numbers of those instructions that are 
not part of the specified subset. 

NSS - Number of subsets in table IDl. 

SUBSET - Subset to be selected from table IDl. 

ISl - Module execution decision table. 

NDI - Number of DMAP instructions in DMAP program. 

NWPI - Number of words per ISl entry. 

4. Method: Table IDl is searched and the proper subset is selected. Each DMAP instruction 
has a corresponding entry in table ISl. If the ISl entry for an instruction is zero, then 
the instruction is eliminated from the DMAP program. Therefore zeroing the ISl entries of 
those instructions specified in table IDl yields the proper subset. XSBSET then returns to 
the calling routine. 

4.2.6 Design Requirements 

4.2.6.1 Use of Open Core 

Open core is used for GIN0 buffers, for generating the XPTDIC Executive Table (see section 
2.4) on restarts, and for storing user generated DMAP programs. Named common block /XCSABF/ 
defines the beginning of open core for module XCSA. Since XPTDIC is not stored permanently in 
open core and because the use of open core to store a DMAP program and a call to LDi are 
mutually exclusive, the LDi subroutines can be origined for overlay purposes at the same location 
as /XCSABF/. 

4.2.6.2 Restart Tables Initialized in the Routines 

The following tables are initialized by the LDi (i = solution number) subroutine or its 
associated Block Data program and are used to aid module XGPI in restarting a problem which uses 
Rigid Format i . 

1. ISl - Module Execution Decision Table: This table when used in conjunction with table 
MEDMSK in named common block /XMDMSK/ will provide module XGPI with the information needed 
to decide whether or not to set the execute flag in an 0SCAR entry. Each DMAP instruction 



4.2-3 



MODULE FUNCTIONAL DESCRIPTIONS 

in a Rigid Format has a corresponding entry in IS! . An entry in IS! can be one to five 
words in length, and only bits 1 through 31 are used to form a truth table. Note that if 
an IS! entry is zero, the corresponding DMAP instruction is unconditionally excluded from 
the Rigid Format DMAP program being compiled by module XGPI. 

2. JNM - File Name Restart Table: The JNM table provides module XGPI with the capability 
of regenerating data blocks which are missing in the restart dictionary and which are 
needed to restart the problem. Note that the restart must be a modified restart. If a 
data block is missing, the JNM table will indicate which bit to set in table MEDMSK, MEDMSK 
is then used with ISl to determine which DMAP modules must be re-executed in order to 
correctly regenerate the missing data block. 

Sample JNM Entry: 



Word 1 
2 
3 



Data Block 
Name (BCD) 



BN (integer) 



BN is the bit number of the bit which is to be set in table MEDMSK to regenerate the 

specified data block. The usable bits (bits 1-31) of MEDMSK are numbered sequentially 

starting from bit 31 of the first word. MEDMSK is five words long. 

Example: 



BN = 
MEDMSK 

Word 



,.,93, 9't , . . . ,l2k, 125, ...,155. 



S31 



] S 31 



lS31 



iS 3 1 



; S 31 



1 



3. INM - Card Name Restart Table: When the problem is beinn restarted and inout data 
(Bulk Data and/or Case Control Data) has been modified, table INM tells module XGPI 
whether or not the modifications affect the compilation of the DMAP program associated 
with the Rigid Format. Table MJCD in named common block /IFPXl/ and table MJMSK in named 
common block /IFPXO/ indicate which cards have been modified. If INM has an entry for a 
modified card, the INM entry will indicate which bit to set in table MEDMSK. MEDMSK is 
then used with ISl to determine which DMAP modules must be re-executed. 



4.2-4 



EXECUTIVE PREFACE MODULE XCSA (EXECUTIVE CONTROL SECTION ANALYSIS) 



Sample INM Entry: 



Word 1 
2 
3 



-- Card Name (BCD) 
BN (integer) 



BN is the number of the bit which is to be set in table MEDMSK if the associated card name 
has been modified. See sample JNM entry for further description of BN. 

4. IDl - Subset Table: DMAP instructions in a DMAP program are numbered sequentially 
starting with "BEGIN" as instruction number 1. Table IDl contains the instruction numbers 
of those instructions that are not to be included in a subset. 

Sample IDl Entry: 



Word 1 


"l 


(integer) 




2 


'i 


(integer) 


I 


• 


• 


> N, words 


m, 


h 


) 




• 





Repeat for all subsets 



N^ = number of instructions to delete in subset 1. (N, >^ 0) . 
I . - I|^ = DN!AP instruction numbers of instructions to be deleted. 



4.2-5 



MODULE FUNCTIONAL DESCRIPTIONS 

4.2.7 Diagnostic Messages 

Every effort is made to get through module XCSA so that the modules IFP1 and IFP can process 
the Case Control Deck and the Bulk Data Deck. XCSA sets the N0G(2i flag in named common block 
/SYSTEM/ according to the severity of the errors found. 

N0GS8 = - no errors found. 

1 - job will terminate after module XGPI. 

2 - job will terminate after IFP modules. 

3 - job terminates in XCSA. 

See diagnostic message section of User's Manual (section 6.2) for a detailed discussion of 
XCSA error messages. XCSA messages include numbers 501 thru 526. 



4.2-6 



EXECUTIVE PREFACE MODULE IFPl (INPUT FILE PROCESSOR, PART 1) 

4.3 EXECUTIVE PREFACE MODULE IFPl (INPUT FILE PROCESSOR, PART 1) 

4.3.1 Entry Point : IFPl 

4.3.2 Purpose 

To process the Case Control Deck, See section 2,3 of the User's Manual for a discussion 
of the Case Control Deck, 

4.3.3 Calling Sequence 

CALL IFPl. IFPl, a Preface module, is called only by subroutine SEMINT. 

4.3.4 Input Data 

The input data consists of the Case Control Deck and the CASECC data block from the Old 
Problem Tape if the problem is a restart. 

4.3.5 Output Data Blocks 

CASECC - Ccse Control Data Table. 

PCDB - Plot Control Data Table (for the structure plotter), 

XYCDB - XY output Control Data Block, 

Notes : 

1. CASECC will always exist. 

2. PCDB will exist only if a structure plotter package is included in the Case 
Control Deck. 

3. XYCDB will exist only if a XY0UT plotter package is included in the Case 
Control Deck. 

4.3.6 Method 

The Case Control Cards are read and stored on a scratch file for later use. The title 
cards are abstracted to form page headings. Title card abstraction is stopped by a SYM, SUBCASE, 
SYMC0M or REPCASE card. IFPl is stopped by a BEGIN BULK card. 



4.3-1 



MODULE FUNCTIONAL DESCRIPTIONS 

The construction of CASECC is as follows: 

1. The scratch tape is read one card at a time, and subroutine XRCARD is called to 
translate the card. 

2. The first four characters beginning with a non-blank are identified in a key word 
table, and card type dependent routines are executed, (See Case Control Deck in User's 
Manual). 

3. When "SUBCASE" type cards are encountered, a CASECC record is written out. 

4. If the card OUTPUT (PL{)T) is encountered, XRCARD images of succeeding cards are written 
on PCDB. 

5. If the card OUTPUT (XYfJUT) is encountered, IFPIXY processes the succeeding cards into 
the XYCDB. 

The module conclusion is as follows: 

1. A copy of CASECC is placed on the NPTP for use in restart. 

2. If this run is a restart, IFPIB is called to analyze CASECC changes and set modify flags 
for later use in Executive Preface module XGPI (see section 4.7). 

4.3.7 Subroutines 



4.3.7.1 Subroutine Name: IFPIB 

1. Entry Point: IFPIB 

2. Purpose: To set modify flags for use in modified restart. 

3. Calling Sequence: CALL IFPIB (ICASE, (JPTP, CASECC, IBUFl ,IBUF2,LENCC) 

ICASE - A two-dimensional array (LENCC,2) for storage of both copies of CASECC 

array - input. 
0PTP - GIN0 file name of the Old Problem Tape - BCD - input. 
CASECC - GIN0 file name of CASECC - BCD - input. 

IBUF2} " '"^'^^ buffer pointers - integer - input. 
LENCC - Row dimension of ICASE - integer - input. 



4.3-2 



EXECUTIVE PREFACE MODULE IFPl (INPUT FILE PROCESSOR, PART 1) 

C0MM0N/IFPXO/SPACE(3) ,NW0RDS 

NW0RDS - Pointer into /IFPXO/ such that IFPl modify flags are in SPACE{NW0RDS) . 

4. Method: 

CASECC and the copy of CASECC on the 0PTP are compared according to the following 
scheme. The local array IW0RD classifies each word in CASECC into and 1, words: If 
the CASECC word is non-zero and IBIT is non-zero in this position, the IBIT bit is turned on 
in /IFPXO/. 1 word: If the CASECC word is different from the 0PTP word and IBIT is 
non-zero in this position, the IBIT is turned on in /IFPXO/. 

IFPIB also determines the loop nature of the problem. The looping rules are as 
follows: 

a. The current problem will loop under the following conditions: SPC set changes; 
MPC set changes; direct input matrix changes; transfer function set changes; tran- 
sient load changes; differential stiffness coefficient set is greater than zero; and 
Piecewise Linear coefficient set is greater than zero. If any of the above 
conditions are met, L00P$ is turned on in /IFPXO/. 

b. The old problem might have been a looping problem if the above conditions were 
present in the 0PTP CASECC. If the old problem was a looping problem as determined 
in (a) and the number of records in CASECC changes, L00P1$ is set (this should 
force the re-execution of the entire loop). 

c. If the problem is not a looping problem, N0L00P$ is set. 

4.3.7.2 Subroutine Name: IFPIC 

1. Entry Point: IFPIC 

2. Purpose: To construct set lists from SET cards. 

3. Calling Sequence: CALL IFPIC (ISUB, 181 ,C0RE,SCR1 ,NWPC, ICC, NZ, THRU, NSET) 

ISUB - 1 - master set. 2 - set belongs to a subcase - integer - input. 

181 - Pointer to storage for set in core - integer - input/output. 

C0RE - Open core array. 

SCRl - GIN0 file number of scratch file containing card images - integer - input. 



4.3-3 



MODULE FUNCTIONAL DESCRIPTIONS 

NWPC - Number of words per card - integer - input. 

ICC - Current line count of Case Control card echo - integer - input/output. 

NZ - Length of open core - integer - input/output. 

THRU - BCD value "THRU" - BCD - input. 

NSET - Number of sets found to current set - integer - input. 

4.3.7.3 Subroutine Name: IFPID 

1. Entry Point: IFPID 

2. Purpose: To write user diagnostic messages from IFPl . 

3. Calling Sequence: CALL IFPID (MSGN) 

MSGN - User message number - integer - input. 

4.3.7.4 Subroutine Name: IFPIE 

1. Entry Point: IFPIE 

2. Purpose: To write out CASECC and update sets. 

3. Calling Sequence: CALL IFPIE (CASE,ISUBC,SYMSEQ.NWDSC,I81 ) 

CASE - Array containing Case Control record to be written out (CASE (LENCC,2)). 

ISUBC - Five word BCD array containing current subcase number - BCD - output. 

SYMSEQ - Symmetry coefficient array - real - input. 

NWDSC - Pointer to beginning of set lists - integer - input/output. 

181 - Pointer to end of set list - integer - output. 

4.3.7.5 Subroutine Name: IFPIF 

1. Entry Point: IFPIF 

2. Purpose: To find the first four characters beginning with a non-blank on one input 
card. 



4.3-4 



EXECUTIVE PREFACE MODULE IFP1 (INPUT FILE PROCESSOR, PART 1) 

3. Calling Sequence: CALL IFPIF ($n.IW0RD,IS,IBEN,II) 

$n - F0RTRAN statement number which defines the return to be taken if the entire 
card is blank. 

IW0RD - First four characters beginning with a non-blank, left justified - BCD - output. 
IS - Number of bits/character times (number of characters/word-1 ) - integer - input. 
IBEN - Mask used to determine if character is blank 'bOOO' - input. 
II - Pointer to word in which IW0RD begins - integer - output, 
C0MM0N/IFP1X/C!3RE(2O) 

IFPIX - 20-word array holding card image - BCD - input. 
C0MM0M/IFP1A/ 

IFPIA - See /IFPIA/ description under Design Requirements (section 4.3.8). 
4.3.7.6 Subroutine Name: IFPIG 

1. Entry Point: IFPIG 

2. Purpose: To find an equal sign and copy the remainder of the data into a specified arrays 

3. Calling Sequence: CALL IFPIG (ITYPE.CASE.ISUBl) 

ITYPE - Indicates area in which to store data. 

1. TITLE \ 

2. SUBTITLE j 

3. LABEL f 

4. HEADl > of /0UTPUT/ 

5. HEAD2 I 

6. HEAD3 1 

7. PL0TID ^ 

8. First 32 words of CASE 

- integer - input. 
CASE - Case control array (132,2) unless ITYPE = 8, when it may be only 52 word array. 
ISUBl - Subcase number -1 or 2 of CASE array. 

C0MM0N/IFP1X/C0RE(2O) 
IFPIX - 20-word array holding card image. 



4.3-5 



MODULE FUNCTIONAL DESCRIPTIONS 

C0MM0N/S)UTPUT/ 
0UTPUT - Output common block - holds BCD titles for NASTRAN pages. 

C0MM0N/IFP1A/ 
IFPIA - See /IFPIA/ description under Design Requirements (section 4.3.8). 

4.3.7.7 Subroutine Name: SWSRT 

1. Entry Point: SWSRT 

2. Purpose: To check set lists for duplicates and overlapping intervals. SWSRT also 
sorts lists into increasing order. 

3. Calling Sequence: CALL SWSRT (LIST,IST0R.NLIST) 

LIST - Array of set members. 

IST0R - Scratch space of length NLIST. 

NLIST - Number of members in LIST. 

4.3.7.8 Subroutine Name: IFPIXY 

1. Entry Point: IFPIXY 

2. Purpose: To construct the XYCDB data block. 

3. Calling Sequence: CALL IFPIXY (FLAG) 

FLAG - 0, first entry for initialization; 1, data entry; -1, last entry. FLAG is set 
to 1 on return from the first entry - integer - input/output. 

C0MM0N/ I FP 1 X/CARD ( 20 ) , CARD 1 ( 20 ) 

CARD - Contains card data as read from the input file. 

CARD! - Contains XRCARD translation of CARD unless CARD(l) contains 'XTIT', 'YTIT', 

'TCUR', 'YTTI' or 'YBTI'. In this case CARD! (20) contains BCD data occurring 

after the equal sign. 

4.3.8 Design Requirements 

1 . One scratch file. 

2. Open core at /IFPIX/. 



4.3-6 



EXECUTIVE PREFACE MODULE IFPl (INPUT FILE PROCESSOR, PART 1) 



C0MM0N/IFP1X/ 



Card 
Image 



XRCARD 

translation 

of input card 



20 words 



set lists 
currently 
active 



2 GIN0 buffers 



3. Common block IFPIA. 



Name 


Length 


Meaning 




Initialized to 


NAME 


2 


Name of data block for error 
messages. 




CASE 
CC 


SUBC 




Subcase key word 




SUBC 


SET 




Set key word 




SETb 


SYMS 




Symmetry sequence key word 




SYMS 


TSTE 




Time step card selection key 


word 


TSTE 


LABE 




Label key word 




LABE 


SUBT 




Subtitle key word 




SUBT 


SCRl 




GIN0 file number of scratch 


file 


301 


CASECC 




GIN0 file name of CASECC 




CASE 


BLANK 




Blank word 




bbbb 



4.3-7 



MODULE FUNCTIONAL DESCRIPTIONS 



Name 

CARD 

C0UN 

T 

BEGI 

TITL 

CASEN 

SPCF 

VEL0 

ACCE 

ELF0 

STRE 

DISP 

0UTP 

SYM 

FREQ 

DL0A 

TEMP 

DEF0 

TIME 

SPC 

MAXL 

IC 

METH 

L0AD 

MPC 

STIF 

ALL 

THRU 

S0RT 

UNSCI 



Length 



Meaning 
Heading word card 

Heading word 
C0UNT 

Begin bulk key word 

Title key word 

Case Control page heading 

Forces of constraint key word 

Velocity key word 

Acceleration key word 

Element forces key word 

Element stress key word 

Displacement key word 

Output key word 

Symmetry subcase key word 

Frequency set key word 

Dynamic loading key word 

Temperature field key word 

Deformation set key word 

Time key word 

Single-point constraint set key word 

Maximum number of output lines key word 

Initial condition set selection id 

Real eigenvalue or buckling method 
selection key word 

Load set selection key word 

Multipoint set selection key word 

Stiffness thermal field key word 

ALL key word 

THRU key word 

Sorted echo key word 

Unsorted echo key word 



Initialized to 

CARD 

C0UN 

T 

BEGI 

TITL 

Case Control 
Deck echo 

SPCF 

VEL0 

ACCE 

ELF0 

STRE 

DISP 

0UTP 

SYM 

FREQ 

DL0A 

TEMP 

DEF0 

TIME 

SPC 

MAXL 

IC 

METH 

L0AD 
MPCb 
STIF 
ALLb 
THRU 
S0RT 
UNS0 



4.3-8 



EXECUTIVE PREFACE MODULE IFPl (INPUT FILE PROCESSOR, PART 1) 



Name 
ECH0 
PL0T 
M0DE 
PUNC 
PRIN 
NWPC 
NCPW 
B0TH 
N0NE 
PCDB 
NAME 

VECT 

SYMC 

EQUAL! 

NM0DES 

IB0B 



I END 

ISYMCM 

L0ADN 

I0UT2 

ICC 

NSET 

NSYM 

IN0M0R 

NPTP 

0PTP 

D0L 

ZZZZBB 



Length 



Meaning 






Initiated to 


Bulk data echo key word 






ECH0 


Plot key word 






PL0T 


Modes key word 






M0DE 


Punch key word 






PUNC 


Print key word 






PRIN 


Number of words per card 






20 


Number of characters per word 


(NASTRAN) 


4 


Echo-sorted and unsorted 






B0TH 


None key word 






N0NE 


Plot control data GIN0 file 


name 


PCDB 


GIN0 error message for PCDB 


fi 


le 


PCDB 
bbbb 


Alternate displacement key 


vord 


VECT 


Symcom key word 






SYMC 


Equal sign left adjusted 






=bbb 


Value of modes card 






1 


Structure plot flag 










0, not currently in structure 
plot mode 

1, in structure plot mode 



Symcom flag 

Current Subcase ID number 

Printed card count 

Number of current set lists 

Number of 'SYM' subcases 

Flag to turn off Title card search 

GIN0 file name of the New Problem Tape 

GIN0 file name of the Old Problem Tape 

Dollar sign 

Hollerith zeros 







1 



1 



1 



NPTP 

0PTP 

$bbbb 

OOOObb 



4.3-9 



MODULE FUNCTIONAL DESCRIPTIONS 



Name 

ISTR 

ISU3 

K2PP 
B2PP 
M2PP 

0500 

REPC 

LENCC 

LINE 

m 

TFL 

DEFA 

ELST 

MAT 

0FRE 

I MAG 

PHAS 

REAL 

CMET 

SDAM 

INER 

ADIS 

AVEL 
AACC 

N0NL 
C0NF 
XYPL 
PLC0 



Length 



Meaning 
Storage flag for IFP1G titles 
Subcase or master CASECC pointer 



Initiated to 
1 

1 



K2PP 

Key words for direct innut matrix selection B2PP 

M2PP 

Key word for differential stiffness set DSC0 
selection 

Key word for repeat subcase subcase REPC 

Length of Case Control Record 166 

Key word for LINE/page count LINE 

Word to distinguish between SUBC0M 0Mbb 
SUBCASE 

Key word for transfer function set selection TFL 

Key word for default specification DEFA 

Key word for element stress set selection ELST 

Key word for thermal material set selection MATE 

Key word for output frequency set selection 0FRE 

Key word for real/imaginary printout IMAG 

Key word for magnitude/phase printout PHAS 

Key word for real or real /imaginary printout REAL 

Key word for complex eigenvalue set selection CMET 

Key word for Structural Damping Table for SDAM 
use in modal formulation 

Key word for Inertia Relief Element set INER 
selection 

Key word for solution set displacement SDIS 
selection 

Key word for solution set velocity selection SVEL 

Key word for solution set acceleration SACC 
selection 

Key word for non-linear load set selection N0NL 

Not used 

Key word for XYPL0T packet delimiter XYPL 

Key word for Piecewise Linear set selection PLC0 



4.3-10 



EXECUTIVE PREFACE MODULE IFPl (INPUT FILE PROCESSOR, PART ]] 



Name 
AXIS 

NLL0 

DELE 

XYCB 

0NEB 

HARM 

SINE 

COS I 

SUBS 

AVEC 

F0RC 

RAND 

XY0U 

0L0A 

PLTl 

PLT2 

XT IT 
YTIT 
TCUR 
YTTI 
YBTI 

IBEN 

EQUAL 

4 



Length 



Meaning 

Key word for selection of Axis 
symmetric boundary condition 

Key word for non-linear output 
set selection 

Key word for element deletion 
set selection 

GIN0 file name of XY control data block 

BCD one 

Key word for harmonic output control 

Key word for sine boundary conditions 

Key word for cosine boundary conditions 

Key word for SUBSEQ 

Key word for solution set vector output 

Not used 

Key word for random set selection 

Key word for XYPLiJT packet delimiter 

Key word for output load set selection 

GIN0 file name of BCD plot tape 

GIN0 file name of binary plot tape 

Key words for XY output titles 



Initiated to 

AXIS 

NLL0 

DELE 

XYCB 
Ibbb 
HARM 
SINE 
COSI 
SUBS 
SVEC 

RAND 

XY0U 

0L0A 

PLTl 

PLT2 

XT IT 
YTIT 
TCUR 
YTTI 
YBTI 



Right shifted blank 'OOOb' 
Right shifted equal '000=' 

Interface with /SYSTEM/ (see section 2.4). 

IFPl can set the following cells of SYSTEM: 

a. N0G0 - (N0G0 flag). If a fatal error is detected. 

b. NLPP - (Number of lines per page). If a LINE card is supplied by the user. 

c. STFTEM - (Material Temperature Set ID). If a TEMP(MATE) card is supplied. 

d. ECH0 - (Echo flag). If an ECH0 request is made. 

e. SPL0TS - (Structure Plot Request). If a structure plot packet is requested, 



4.3-11 



MODULE FUNCTIONAL DESCRIPTIONS 

f. PL0TF - (Plot Flag). If a structure plot request is present. 
5. Interface with /0UTPUT/. 

IFPl supplies the problem title, subtitle, and label as well as the Plot ID. 

4.3.9 Diagnostic Messages 

IFPl makes every attempt to process the entire Case Control Deck so that the complete 
Preface will run. Hence all fatal messages only cause the N0G0 flag to turn on. 

IFPl causes messages 601-699. For the exact nature of these messages, refer to the 
Diagnostic Message section of the User's Manual. 



4.3-12 



EXECUTIVE PREFACE MODULE XS0RT (EXECUTIVE BULK DATA CARD S0RT) 
4.4 EXECUTIVE PREFACE MODULE XSI3RT (EXECUTIVE BULK DATA CARD S0RT) 

4.4.1 Entry Point : XS0RT 

4.4.2 Purpose 

The function of XS0RT is to prepare a file on the New Problem Tape containing the sorted 
bulk data. The operation of XS0RT is influenced by the type of run. If a cold start, the bulk 
data is read from the system input stream (or the User's Master File), sorted and written on the 
New Problem Tape. If an unmodified restart, the bulk data is copied from the Old Problem Tape 
onto the New Problem Tape. If a modified restart, the bulk data is read from the Old Problem 
Tape, and cards are deleted and/or added in accordance with cards in the system input stream. 
Additionally, flags are set within restart tables for each card type changed in any way. Again, 
the sorted bulk data is written onto the New Problem Tape. A print of the unsorted and/or sorted 
bulk data is made on request. XS0RT processes all data cards between the BEGIN BULK and ENDDATA 
cards in the input stream. Both cards must be present to properly bracket the NASTRAN Bulk 
Data Deck. 

4.4.3 Calling Sequence 

CALL XSfJRT. XS0RT, a Preface module, is called only by the Preface driver, SEMINT. 

4.4.4 Method 

If the input is to be from a User Master File, XS(3RT begins by positioning the file to the 
beginning of the proper subset of bulk data cards. INITC0 is then called to initialize machine 
dependent masks and constants. The open core below XS0RT (/ES0RT/) is divided into 5 GIN0 buffers 
and a work buffer. This work buffer will contain each data card and a chaining pointer to 
indicate its sorted position. That is, the cards will be placed into the work buffer in the 
same order as read, but their sorted order will be shown by a chaining word with each card 
pointing to the position of the next card in alphanumeric sort. If the work buffer is unable 
to hold all of the bulk data cards, each subset that fills the buffer is unchained and written 
in sorted order onto a scratch file. This writing onto a scratch file frees the work buffer for 
another subset of data cards. 



4.4-1 



MODULE FUNCTIONAL DESCRIPTIONS 

Three scratch files may become involved in sorting a large number of bulk data cards. 
After the first two scratches are filled with sorted subsets, they are merged, while main- 
taining the sorted order, onto a third scratch. From this point, after each new subset 1s 
written onto a scratch, it is merged with the scratch containing all previous subsets. As 
an example, assume three scratches are named A, B, and C. Scratch A is written with the first 
subset of data from a filled work buffer. Scratch B is written with the second subset. 
Scratch A and B are then merged to form scratch C. This frees scratch A and B. Scratch A is 
then written with the third subset of data. A and C are merged to form a new B. A is then 
written with the fourth subset. A and B are merged to form a new C. This process continues 
until all bulk data has been sorted. Following the final merge, one of the scratch files 
will contain all of the sorted bulk data cards. 

As the sort and merge operations are being performed, any continuation cards or delete 
cards encountered are written onto separate holding files. After all data cards in the input 
stream have been processed, each of these holding files is processed. The delete card values 
are placed in ascending order and any overlaps or redundancies are removed. The continuation 
cards are checked for duplication and an in-core dictionary of their connection words is formed. 

XS0RT may now make a pass through the scratch file containing all of the sorted bulk data 
cards within the input stream. During this pass, the User Master File (UMF) or the Old 
Problem Tape (0PTP) data cards are merged with those from the input stream. Both the UMF and 
0PTP data cards were properly sorted during their preparation. As this merge progresses, any 
data cards designated for removal by delete control cards are discarded. If the NASTRAN run 
for which XS0RT is operating is a restart, all data cards within the input stream plus any 
deleted from the 0PTP will cause data card type flags to be set within restart tables. This 
entire pass is not performed if the run does not require either a UMF or 0PTP. 

Now a final pass of the resulting sorted data is made to introduce any continuation cards 
and write the completed Bulk Data Deck onto the New Problem Tape. The continuation cards are 
connected to the sorted data cards by matching connection words. Continuation cards can in no 
way affect the sorted order. If a print of the resulting sorted deck is requested, it is 
performed during this pass. 

During any sort collation the data cards are ordered by comparing half-fields from left 
to right. Each bulk data card may contain up to ten, eight column (character) fields. 



4.4-2 



EXECUTIVE PREFACE MODULE XS0RT (EXECUTIVE BULK DATA CARD S0RT) 

Because of computer word size constraints, each data card is stored into twenty memory words, ^'our 
characters (half a card field) per word. Sorting proceeds by comparinci the first words (4 charac- 
ters) from each card. If an order cannot be established, i.e., the words are equal, the second 
words from each card are compared, and so on, until an order is established or total duplication 
is determined. Each field (8 characters) is left (BCD) or right (integer) justified prior 
to sorting to eliminate leading or trailing blanks. The characters within the first field 
of each card are converted to a special internal character set prior to comparing to eliminate 
machine dependent collation sequences which might order the same cards differently on different 
machines. This internal set forces the collation order to be ascending from blank through 
all numbers then all letters. A flowchart is given in Figure 1. 

4.4.5 Subroutines 



In the following, note that XRECPS, RPAGE, INITC0, XFADJ, XBCDBI, XPRETY, CRDFLG, EXTINT, 
and INTEXT are secondary entry points in XRECPS. 

4.4.5.1 Subroutine Name: XRECPS 

1. Entry Point: XRECPS 

2. Purpose: Positions the continuation card file to the proper record (card image) as 
determined from the in-core continuation card dictionary. 

3. Calling Sequence: CALL XRECPS (NEW, 0LD) 

Where: NEW = the file position being requested 
0LD = the file position last requested. 
Both arguments are integer record numbers. 

4.4.5.2 Subroutine Name: RPAGE 

1. Entry Point: RPAGE 

2. Purpose: Counts output print lines for XS0RT, and performs the necessary interface 
with the system subroutine PAGE. 

3. Calling Sequence: CALL RPAGE (NLINE) 

Where: NLINE = integer number of lines being output. If NLINE >_ 100 a page eject is 



4.4-3 



WDULE FUNCTIONAL DESCRIPTIONS 

forced and the line count Is set to NLINE - TOO. 

4.4.5.3 Subroutine Name: INITC0 

1. Entry Point: INITC0 

2. Purpose: Initializes machine dependent masks and constants within XSjtRT. 

3. Calling Sequence: CALL INITC0 

4.4.5.4 Subroutine Name: XFADJ 

1. Entry Point: XFADJ 

2. Purpose: Adjusts four character fields, left or right, two or four fields at 

a time. If the fields contain only integers, the shift is right, otherwise the shift 
will be left. This routine determines only the direction of shift required. Actual 
shifting is performed by XFADJl. 

3. Calling Sequence: CALL XFADJ (BUF.SD.K) 
Where: BUF = field array to be shifted 

(0, shift two fields at a time 



SD ■^' 

[], shift four fields at a time 

0, returned if right shift was done. 

1, returned if left shift was done. 

4.4.5.5 Subroutine Name: XBCDBI 

1. Entry Point: XBCDBI 

2. Purpose: Converts two, four character BCD integer fields (right adjusted in the left 
most four characters of the computer word) into a single binary integer (right adjusted 
in the second of the two Input words). 

3. Calling Sequence: CALL XBCDBI (BUF) 
Where: BUF = two v/ord array to be converted. 

4.4.5.6 Subroutine Name: XPRETY 
1. Entry Point: XPRETY 



4.4-4 



EXECUTIVE PREFACE MODULE XS0RT (EXECUTIVE BULK DATA CARD S0RT) 

2. Purpose: "Pretties-up" printed output by left adjusting all fields to eliminate any 
leading zeros introduced when integer fields are right adjusted. 

3. Calling Sequence: CALL XPRETY (BUF) 
Where: BUF = card image array. 

4.4.5.7 Subroutine Name: CRDFLG 

1. Entry Point: CRDFLG 

2. Purpose: Sets the card type flags within the restart tables. 

3. Calling Sequence: CALL CRDFLG (CARD) 

Where: CARD = first of two word card type field. 

4.4.5.8 Subroutine Name: EXTINT 

1. Entry Point: EXTINT 

2. Purpose: Converts card type field from the machine dependent character code to 
an internal machine independent code. 

3. Calling Sequence: CALL EXTINT (CTYBF) 

Where: CTYBF = first of two word card type field. 

4.4.5.9 Subroutine Name: INTEXT 

1. Entry Point: INTEXT 

2. Purpose: Converts the card type field from an internal machine independent code to 
the machine dependent character code. 

3. Calling Sequence: CALL INTEXT (CTYBF) 

Where: CTYBF = first of two word card type field. 

4.4.5.10 Subroutine Name: XFADJl 

1. Entry Point: XFADJl 

2. Purpose: Adjust four character fields left or right, two or four fields at a time. 
This routine performs actual shifting with the direction of shift controlled through the 



4.4-5 



MODULE FUNCTIONAL DESCRIPTIONS 



calling sequence. (Note entry point XFADJ). 

3. Calling Sequence: CALL XFADJl (6UF, SHIFT. SD) 

Where: BUF = Field Array to be shifted. 
SHIFT = Function LSHIFT or RSHIFT. 

(O, shift two fields at a time. 



SD = 

(.1, shift four fields at a time. 

4.4.5.11 Function Name: ISFT 

1. Entry Point: ISFT 

2. Purpose: Performs special shifting functions for subroutine XFAJl. 

3. Calling Sequence: CALL ISFT 

RESULT = ISFT(BUF,SFTCNT,J) 

where: BUF = Word to be shifted. 
SFTCNT = Bits to be shifted. 

J = Shift direction control; 3 - right, 4 = left. 

4.4.6 Design Requirements 

1. Data cards operated upon by XS0RT must conform to the NASTRAN format for bulk 
data cards (ten, eight character fields per card). See section 2 of the User's Manual 
for details. 

2. Data cards must contain only valid BCD key punch codes or blanks. Non-standard 
multi -punched code (e.g., some IBM EBCDIC) will cause unpredictable results. 

3. XS0RT requires sufficient open core to contain five GIN0 buffers and a work buffer 
for at least ten data cards. (Each data card requires twenty-one core locations). Sort 
efficiency increases in proportion to the size of the work buffer. 

4. The continuation card dictionary must fit into the core work buffer during the final 
pass. Each continuation card requires two dictionary locations. 

5. XS0RT logic is biased toward input that is already sorted. That is, the program 
will operate at a much greater speed if verifying a sort rather than producing a sort. 



4.4-6 



EXECUTIVE PREFACE MODULE XSi3RT (EXECUTIVE BULK DATA CARD S0RT) 

4.4.7 Diagnostic Messages 

XS0RT can produce two catagories of diagnostic messages. The first are termed USER 
messages and deal with bulk data card errors. The second are termed SYSTEM messages which 
are generally fatal in nature and indicate serious 1/0 malfunctions. 

XS0RT message numbers includes 201 through 216. All messages are listed and explained in 
section 6 of the User's Manual. 



4.4-7 



MODULE FUNCTIONAL DESCRIPTIONS 



XSiJRT 




Position UMF 
to proper file 



Call 

INITC0 

to initialize 

constants & 

masks 




lA 



Initialize work buffer 
with low & high limit 




2A 



Read card 
from input 




Print card 



Adjust char, to left 
to each field 




Write card on 
contin. file 





Write card on 
delete file 





IB 



Figure l.(a) Flowchart for module XS0RT. 



4.4-8 



EXECUTIVE PREFACE MODULE XS0RT (EXECUTIVE BULK DATA CARD S0RT) 




Between 



Does 
field on 
this card fall 
between same fields on 
,j;wo other cards or is^ 
it equal to^ 
other- 



Move to 
next field 



Has 
last field 
been reached^ 
? 



No 




Yes 



Merge two scratches & 
form a 3rd scratch 



Duplicate card 



Sorted position found 
set chaining pointer 




2A 




2B 




Unchain sorted work buffer 
and write on a scratch 




Set-up next 
scratch for 
next unload 



I 



lA 




Process delete card file - sort 
& eliminate redundancy re-write 
onto file 



^ 

Merge Old Prob. Tape or UMF 

with final merged scratch from 
input. Remove any cards deleted 




IC 



Figure l.(b) Flowchart for module XS0RT. 
4.4-9 



MODULE FUNCTIONAL DESCRIPTIONS 




Fonii continuation card 
dictionary in core 



I 



Copy sorted card 
file onto new 
problem tape 



Scan sorted card file produced 
from the last merge (T) or merge 
0if UMF or restart 





Print card{s) 



f RETURN j 



Copy sorted card without 

continuation onto new 

problem tape 



Collate cont. card with sorted 
card. Write both onto new 
problem tape 




ID 



Figure l.(c) Flowchart for module XS0RT. 



4.4-10 



EXECUTIVE PREFACE MODULE XS0RT (EXECUTIVE BULK DATA CARD S0RT) 




Figure 1.(d) Flowchart for module XS0RT. 
4.4-11 



EXECUTIVE PREFACE MODULE IFP (INPUT FILE PROCESSOR) 

4.5 EXECUTIVE PREFACE MODULE IFP (INPUT FILE PROCESSOR) 

4.5.1 Entry Point : IFP 

4.5.2 Purpose 

To process the Bulk Data Deck sorted by Executive Preface module, XS;jRT. This task is 
accomplished as follows: 1) the sorted Bulk Data Deck is read from the New Problem Tape (NPTP) 
card-by-card; 2) the contents of each field of each card are validated (see section 2.4 of the 
User's Manual for detailed descriptions of each bulk data card); 3) card images or modified 
card images are written on data blocks or the NPTP or the Data Pool File (see section 2.3.2 of 
the Programmer's Manual for details on the formats of these data blocks). 

4.5.3 Calling Sequence 

CALL IFP. IFP, an Executive Preface module, Is called only by the Preface driver, 
subroutine SEMINT. 

4.5.4 Input 

The input to IFP consists of the Bulk Data Deck sorted by Executive Preface module XS0RT. 

4.5.5 Output 

The output of IFP consists of: 1) data blocks used in Rigid Formats; 2) the AXIC data 
block, which is processed by Executive Preface module IFP3 and is present only If the NASTRAN 
run is a conical shell (a unique structural element) problem solution; 3) the PVT Executive table, 
which contains the names and values of all DMAP parameters Input by means of the PARAM bulk data 
card, and which 1s written on the New Problem Tape to be processed by Executive Preface module 
XGPI; and 4) DMI's (Direct Matrix Inputs) and DTI's (Direct Table Inputs), each of which is 
written on the Data Pool File as a data block and is indistinguishable from any matrix data block 
or table data block pooled by the Executive Segment File Allocator (XSFA) module. 



4.5-1 



MODULE FUNCTIONAL DESCRIPTIONS 

4.5.5.1 Output Data Blocks Used in Rigid Formats 

GE0M1 - Grid point, coordinate system, and sequence data. 

GE0M2 - Element connection data. 

GE0M3 - Static loads and temperature data. 

GE0M4 - Displacement set definitions data. 

EPT - Element Property Table. 

MPT - Material Property Table. 

DIT - Direct Input Tables. 

EDT - Element Deformation Table. 

DYNAMICS - Collection of bulk data cards for a dynamics problem. 

MATP00L - Data block containing matrices input on DMIG bulk data cards. 

Note: Do not confuse the DTI (Direct Table Input) bulk data card and the DIT (Direct 
Input Table) data block. 

4.5.6 Method 

4.5.6.1 General Comments 

The bulk data cards processed by IFP are classified into five categories. Listed below is 
a brief explanation of each with a few examples. 

1. Closed End Cards (Fixed Length Card) 

Cards such as CQUAD2 and PR(3D go through all the standard bulk data card checks (see 4.5.6.2) 
before being processed by the card dependent subroutines within IFP, (IFSiP, i = 1, 2, 3, 4). 
These closed end cards are output to one of the standard GIN0 files. 

2. Open Ended Cards (Variable Length Cards) 

In cards such as SPCl and PLFACT, since the length and therefore the formats are not 
known, the bulk data checks using the data initialized in the block data subprograms 
must be made in the card dependent subroutines. Also, since the length is not known, a 
flag is placed at the end of the information for that card before being written on the 
file in order that routines reading an open ended card will be signaled as to an end-of- 
card condition. 



4.5-2 



EXECUTIVE PREFACE MODULE IFP (INPUT FILE PROCESSOR) 

3. GRDSET and BAR0R Cards 

Special cards such as GRDSET and BARfilR are not output to a GIN? data block, but are stored 
in local variables, and provide default values for the GRID and CBAR cards. 

4. DMI and DTI Cards 

DMI and DTI cards are unique in the manner in which they are used by the user and orocessed 
by IFP. The DMI card enables the user to define matrix data blocks directly, while the 
DTI card gives the user the capability to input his own table data blocks directly. The 
user must write a DMAP sequence or use the ALTER feature - see section 2.2 of the User's 
Manual - in the Executive Control Deck to alter the Rigid Format chosen in order to use 
the DMI or DTI feature since he is defining his own data blocks. Both DMI and DTI cards 
are written directly onto the Data Pool File. 

5. PARAM Cards 

PARAM bulk data cards are stored in open core by IFP until the entire Bulk Data Deck has 
been processed. PARAM cards are then written as the PVT (Parameter Value Table) on the 
NPTP for subsequent processing by the Executive Preface module XGPI. 

4.5.6.2 Card Processing 

1. IFP searches the NPTP for the Bulk Data Deck and extracts it in 20 word (one physical 
card) segments. Each card is passed to subroutine RCARD, which takes the BCD card images 
and converts the fields thereon to values, and identifies the values as to type: blank 
data field, integer data field, real single precision data field, BCD data field, real 
double precision data field or a data field which is in error. 

IFP always has two physical bulk data cards in internal storage areas: the "current" 
card and the "next" card. M is the local F0RTRAN array where the values of the current 
bulk data card are located, and Ml the local F0RTRAN array where the values of the next 
card are located. After the current card is processed, the data in Ml are transferred into 
M, and new card values for Ml are input from the NPTP. When the values from Ml are trans- 
ferred to M, the first two words (the card mnemonic) are stripped off. Ml (3) Is stored 1n 
M(l), Ml(4) is stored inM(2),and so on. 



4.5-3 



MODULE FUNCTIONAL DESCRIPTIONS 

2. /IFPXl/ is referenced to verify the admissibility of the name (mnemonic) of the 
particular card taken from the NPTP. 

3. The approach acceptability flag is checked. This flag is defined as follows: 

= OK for any approach; 

1 = Not used by displacement approach; 

2 = Illegal for displacement approach. 

The approach flag (DISPL, DMAP) is found In /SYSTEM/. 

4. The proper output files are established. See Table 1 or Table 2 for the outout file 
on which the various bulk data cards will reside. 

5. Uniqueness flags, which reside In C(JMM(}N/IFPX5/, are defined for each card 
type as follows: 

- No check is made; 

1 - A check is made; 

2 - A special check is made. 

For example, on the bulk data card C0NRUD, field 2 is the EID, and it must be unique with 
respect to all other C0NR0D EID's. 

6. The next physical card is read from the NPTP. This will be the next card to be processed. 

7. A check for too many continuation cards is made. This check is made on fixed length 
cards only. 

8. A check is made for the minimum and maximum number of words for a logical bulk data card. 

9. A check for the proper types of values for the fields on a card Is made by referencing 
/IFPX7/, which contains format codes for each card type as follows: 

= Blank 

1 = Integer 

2 = Real 

3 = BCD 

4 = Double Precision 

5 = Anything. 



4.5-4 



EXECUTIVE PREFACE MODULE IFP (INPUT FILE PROCESSOR) 

When RCARD passes format values to IFP, a format code of will override this check. In the 
card dependent code check (step 10), the value will be looked at to see if it is in error. 

10. An auxiliary subroutine IFSiP, i = 1, 2, 3, 4, is called to execute card dependent code. 

11. If the input card passes the tests in the card dependent code, the data are written on 
the appropriate GIN0 output file. 

4.5.6.3 Module Conclusion 

When the sorted Bulk Data Deck has been exhausted, the following steps are carried out. 

1. The appropriate trailer codes are written for each data block. For listings of 
trailer information reference section 2.3.2. 

2. The PVT is written on the NPTP. 

3. Restart flags are set in /IFPXO/. 

4.5.7 Subroutines 

IFP uses the utility routine RCARD described in section 3.4.20. 

4.5.7.1 Block Data Subprogram: IFXIBD 

Purpose: To initialize /IFPXl/, which is used by IFP to validate card names. All bulk 
data card names must appear in this table. 

4.5.7.2 Block Data Subprogram: IFX2BD 

Purpose: To initialize /IFPX2/. This table contains two words per entry (two words per 
card type): the first gives the GIN0 output file number, and the second gives the approach 
acceptability flag. 

4.5.7.3 Block Data Subprogram: IFX3BD 

Purpose: To initialize /IFPX3/. This table contains two words per entry (two words per 
card type): the first word is used as the Conical Shell Problem flag, and the second word is 
used internally to store the number of words to be output to the GIN0 output file. 



4.5-5 



MODULE FUNCTIONAL DESCRIPTIONS 

4.5.7.4 Block Data Subprogram: IFX4BD 

Purpose: To initialize /IFPX4/. This table contains two words per entry (two words per 
card type): the first is the minimum number of words allowable, the second is the maximum 
number of words allowable. The first word of an entry being negative implies the card is open 
ended . 

4.5.7.5 Block Data Subprogram: IFX5BD 

Purpose: To initialize /IFPX5/. This table contains two words per entry (two words per 
card type): the first is a pointer into /IFPX7/, the second is the field 2 uniqueness check flag. 

4.5.7.6 Block Data Subprogram: IFX6BD 

Purpose: To initialize /IFPX6/. This table contains two words per entry (two words per 
card type): the first is header word 1 (card type), the second is header word 2 (trailer bit 
position) of the three word header information of each logical record, which corresponds to all 
the data of particular bulk data card type. See section 2.3.2 for details. 

4.5.7.7 Block Data Subprogram: IFX7BD 

Purpose: To initialize /IFPX7/. Each entry contains the admissible sequence of format 
codes for that card type (see step 9 in section 4.5.6.2 above). 

4.5.7.8 Subroutine Name: IFSiP, i = 1, 2, 3, 4 

1. Entry Point: IFSiP, i = 1, 2, 3, 4 

2. Purpose: These are the four subroutines that the module driver IFP calls to execute 
card dependent code. 

3. Calling Sequence: CALL IFSiP ($n^ ,$n2,$n3) 

n, - FORTRAN statement number defining the return taken in the event of a format 
or data error. 

ny - F(JRTRAN statement number defining the return taken when local variables are 
set to provide default values for appropriate cards. 

n, - F0RTRAN statement number defining the return taken in the event of a data error. 



4.5-6 



EXECUTIVE PREFACE MODULE IFP (INPUT FILE PROCESSOR) 
4.5.7.9 Subroutine Name: IFPPK 

1. Entry Points: IFPPK, IFPPKI.IFPPKN 

2. Purpose: To provide IFP with a shortened version of subroutine BLDPK in order to 
preserve core storage on machines with minimal memory capacities. This routine is used 
to write DMI cards on the Data Pool File in NASTRAN matrix format. 

4.5.8 Design Requirements 

Open core is defined in /IFPXX/. Open core is used to store all PARAM cards until the 
Bulk Data Deck has been exhausted, at which time the PARAM cards are written on the NPTP as 
the PVT Executive table. 

4.5.9 Diagnostic Messages 

If a fatal error is detected during any phase of the processing of module IFP, the N(8G0 flag 
will be set, and the error message will be printed out. IFP will continue processing data cards 
until all are processed. IFP may issue error messages 301 through 332. 



4.5-7 



MODULE FUNCTIONAL DESCRIPTIONS 

Table 1(a). Bulk Data Cards Processed by IFP Sorted by Internal Card Number. 

The following list gives an explanation of the column headings on the following pages of 
Table 1. 

A = Internal IFP Bulk Data Card Number 

B = Bulk Data Card Name (an asterisk following a name implies the card is not available) 

C = Internal IFP GIN0 Output File Number 

D = Data Block Name 

E = Approach Acceptance Indicator 

-2 = Illegal for the Force Approach 

-1 = Not Used by the Force Approach 
Q = OK for any Approach 

1 = Not Used by the Displacement Approach 

2 = Illegal for the Displacement Approach 

F = Minimum Number of Words Allowed Per Logical Card (F negative implies an open ended card) 
G = Maximum Number of Words Allowed Per Logical Card 
H = Format Check Pointer Into IFX7BD 
I = Field 2 Uniqueness Check Flag 

= No Check is Made 

1 = Check is Made 

2 = Special 

J = Subroutine L0CATE Code for Card on Output Data Block 

K = Trailer Bit Position 

L = Pointer to Secondary (Card Dependent) Code 

51 = Subroutine IFSIP 

52 = Subroutine IFS2P 

53 = Subroutine IFS3P 

54 = Subroutine IFS4P 

M = FORTRAN Statement Number in the Card Dependent Subroutines 
N = Conical Shell Problem Flag 
-1 = Illegal for Shell Mode 



4.5-8 



EXECUTIVE PREFACE MODULE IFP (INPUT FILE PROCESSOR) 

Table 1(b). Bulk Data Cards Processed by IFP Sorted by Internal Card Number. 

= OK for Shell Mode 

1 = Puts Card Into Different Data Block 

= Users Map for Data Blocks IFX2BD IFX6BD 

Values for I = 1 ,2 or 3 

J = 1,2 or 3 

H = A.B.C.D or E 

K = 1,2,3,4,5 or 6 
I = Is Data Statement in the Block Data Program 

J = The Group of A Through E Continuation Card Blocks Within the Ith Data Statement 
H = Alphabetic Character in Col 6 (Continuation Column) in the Jth Group 
K = The Pair Number on Line H Where the Actual Data is 



4.5-9 



MODULE FUNCTIONAL DESCRIPTIONS 



Table 1(c). Bulk Data Cards Processed by IFP Sorted by Internal Card Number. 
B CD EFG HIJKL MN 



1 

2 

3 

4 

5 

6 

7 



19 
20 
21 
22 



GRID 

GRDSET 

BEAM0R* 

SEQGP 

C0RD1R 

CiJRDlC 

CglRDlS 

8 C5)RD2R 

9 C0RD2C 

10 C0RD2S 

11 PLfJTEL 

12 SPCl 

13 SPCADD 

14 SUP0RT 

15 13MIT 

16 SPC 

17 MPC 

18 F0RCE 
MOMENT 
F0RCE1 
M0MENT1 
F0RCE2 

23 M(JMENT2 

24 PL0AD 

25 SL0AD 

26 GRAV 

27 TEMP 

28 GENEL 

29 PR0D 

30 PTUBE 
PVISC 
PBEAM* 

33 PTRIAl 

34 PTRIA2 

35 PTRBSC 

36 PTRPLT 

37 PTRMEM 

38 PQUADl 

39 PQUAD2 

40 PQDPLT 

41 PQDMEM 

42 PSHEAR 

43 PTWIST 

44 PMASS 

45 PDAMP 

46 PELAS 

47 C!3NR(3D 

48 CR0D 

49 CTUBE 

50 CVISC 

51 CBEAM* 

52 CTRIAl 

53 CTRIA2 

54 CTRBSC 

55 CTRPLT 

56 CTRMEM 

57 CQUADl 

58 CQUAD2 



31 
32 



1 GEjilMl 
1 GE0M1 
8 GE0M2 



6E0M1 
GE0M1 
GE0M1 
GE0M1 
GE0M1 
GE0M1 

1 GE0M1 

8 GE0M2 
10 GE0M4 
10 GE0M4 
10 GE0M4 
10 GE0M4 
10 GE0M4 
10 GE0M4 

9 GE0M3 
GE0M3 
GE0M3 
GE0M3 
6E0M3 
GE0M3 
GE0M3 
GE0M3 
GE0M3 
GE0M3 

8 GE0M2 

2 EPT 
EPT 
EPT 
EPT 
EPT 



9 
9 
9 
9 
9 
9 
9 
9 
9 



EPT 
EPT 
EPT 
EPT 
EPT 
EPT 



2 EPT 
2 EPT 



EPT 

EPT 

EPT 

EPT 

EPT 
8 GE0M2 
8 GE0M2 
8 GE0M2 
8 GE0M2 
8 GE0M2 
8 GE0M2 
8 GE0M2 
8 GE0M2 
8 GE0M2 
8 GE0M2 
8 GE0M2 
8 GE0M2 






-2 
-1 








-2 

-2 

-2 

-2 

-2 

-2 















-2 





-2 



-2 













-2 

-2 

-2 







-2 
-2 










12 
12 
12 



4 
4 
4 

4 8 

4 8 

4 8 

4 8 

12 16 

12 16 

12 16 

4 8 

4 8 

4 8 

4 8 

4 8 

4 8 

4 8 

8 12 

8 12 

8 12 

8 12 

8 12 

8 12 

8 12 

4 8 

8 12 

4 8 



-4 
4 



9 

12 
12 



4 

4 

3 

4 

4 

4 

4 

4 

4 

4 

4 

4 

4 

4 

4 

4 

4 8 

8 12 



24 

16 

8 

12 

12 

8 

16 

8 

12 

8 

8 

8 

8 

8 



4 
4 
4 



8 
8 
8 

8 24 
8 12 
8 12 
8 12 
8 12 
8 12 
8 12 
8 12 



1 1 

13 2 

25 2 

37 

37 

37 

37 

45 1 

45 1 

45 1 

505 

-1 

-1 1 

37 

37 

101 

-1 

109 

109 

121 

121 

133 

133 

145 

157 



165 1 
157 
-1 1 
165 1 
177 1 
189 
197 1 
221 1 
237 
257 1 
257 1 
237 
221 
237 
257 
237 
237 
237 
269 
269 
497 
277 1 
37 
37 
37 
289 1 
313 1 
313 1 
313 1 
313 1 
313 1 
325 1 
325 1 



4501 


5301 
1801 
1701 
1901 
2101 
2001 
2201 
5201 
5481 
5491 
5601 
5001 
5501 
4901 
4201 
4801 
4001 
4601 
4101 
4701 
5101 
5401 
4401 
5701 
4301 
902 
1602 
1802 
102 
1202 
1302 
1102 
1502 
1402 
702 
802 
602 
502 
1002 
1702 
402 
202 
302 
1601 
3001 
3701 
3901 
101 
3301 
3401 
3201 
3601 
3501 
2801 
2901 



45 



53 
18 
17 
19 
21 
20 
22 
52 
58 
59 
56 
50 
55 
49 
42 
48 
40 
46 
41 
47 
51 
54 
44 
57 
43 

9 

16 
18 

1 
12 
13 

n 

15 

14 

7 

8 

6 

5 

10 

17 

4 

2 

3 

16 

30 

37 

39 

1 

33 

34 

32 

36 

35 

28 

29 



S3 

S3 

S3 

SI 

SI 

SI 

SI 

SI 

SI 

SI 

SI 

S3 

S3 

SI 

SI 

SI 

S3 

SI 

SI 

SI 

SI 

SI 

SI 

SI 

SI 

SI 

SI 

S3 

SI 

SI 

SI 

SI 

SI 

SI 

SI 

SI 

SI 

SI 

SI 

SI 

SI 

SI 

SI 

SI 

SI 

SI 

SI 

SI 

SI 

SI 

S3 

SI 

SI 

SI 

SI 

SI 

SI 

SI 



100 
200 
300 
40 
500 
600 
700 
800 
900 
1000 
1111 
3980 
4020 
1400 
1400 
1600 
1700 
1800 
1800 
2000 
2000 
2200 
2200 
2400 
2500 
2600 
2500 
2800 
2900 
2920 
310 
2960 
2980 
3000 
3020 
3020 
3000 
2980 
3000 
3020 
3000 
3000 
3000 
3200 
3200 
3240 
3260 
3281 
3282 
3283 
3340 
3360 
3360 
3360 
3360 
3360 
3460 
3460 



IJHK 

llAl 

11A2 

11A3 

11A4 

HAS 

11A6 

llBl 

11B2 

11B3 

11B4 

1185 

11B6 

llCl 

11C2 

11C3 

11C4 

11C5 

11C6 

llDl 

1102 

11D3 

11D4 

11D5 

11D6 

llEl 

11E2 

11E3 

11E4 

11E5 

nE6 

12A1 

12A2 

12A3 

12A4 

12A5 

12A6 

12B1 

12B2 

12B3 

12B4 

12B5 

12B6 

12C1 

12C2 

12C3 

12C4 

12C5 

12C6 

12D1 

12D2 

12D3 

12D4 

12D5 

12D6 

12E1 

12E2 

12E3 

12E4 



4.5-10 



EXECUTIVE PREFACE MODULE IFP (INPUT FILE PROCESSOR) 



Table 1(d), Bulk Data Cards Processed by IFP Sorted by Internal Card Number. 
B CD EFG HIJKLMN 




IJHK 



59 CQDPLT 


8 


6E0M2 





8 


12 


325 


1 


2701 


27 


SI 


3460 


_] 


60 CQDMEM 


8 


GE0M2 





8 


12 


325 


1 


2601 


26 


SI 


3460 


-1 


61 CSHEAR 


8 


GE0M2 





8 


12 


337 


1 


3101 


31 


SI 


3540 


-1 


62 CTWIST 


8 


GE0M2 





8 


12 


337 


1 


3801 


38 


SI 


3540 


-] 


63 C0NM1 


8 


GE0M2 





8 


28 


349 


1 


1401 


14 


SI 


3580 


-I 


64 C0NM2 


8 


GE0M2 





8 


20 


377 


1 


1501 


15 


SI 


3600 


-1 


65 CMASSl 


8 


GE0M2 


-2 


4 


12 


337 


1 


1001 


10 


SI 


3620 


-] 


66 CMASS2 


8 


GE0H2 


-2 


4 


12 


397 


1 


1101 


11 


SI 


3623 


-1 


67 CMASS3 


8 


GE0M2 


-2 


4 


8 


37 





1201 


12 


SI 


3674 


-l 


68 CMASS4 


8 


GE0M2 


-2 


4 


8 


409 





1301 


13 


SI 


3697 


_] 


69 CDAMPl 


8 


GE0M2 - 


-2 


4 


12 


337 


1 


201 


2 


SI 


3620 


-1 


70 CDAMP2 


8 


GE0M2 


-2 


4 


12 


397 


1 


301 


3 


SI 


3623 


-1 


71 CDAMP3 


8 


GE0M2 


-2 


4 


8 


37 





401 


4 


SI 


3675 


-] 


72 CDAMP4 


8 


GE0M2 


-2 


4 


8 


409 





501 


5 


SI 


3698 


-] 


73 CELASl 


8 


GE0M2 


-2 


4 


12 


337 


1 


601 


6 


SI 


3620 


_] 


74 CELAS2 


8 


GE0M2 


-2 


4 


12 


417 


1 


701 


7 


SI 


3800 


-I 


75 CELAS3 


8 


GE0M2 


-2 


4 


8 


37 





801 


8 


SI 


3676 


-I 


76 CELAS4 


8 


GE0M2 


-2 


4 


8 


409 





901 


9 


SI 


3699 


-1 


77 f-IATl 


3 


MPT 





4 


20 


429 


1 


103 


1 


SI 


3860 




78 MAT2 


3 


MPT 





8 


20 


449 


1 


203 


2 


SI 


3880 


_] 


79 CTRIARG 


8 


GE0M2 


-2 


8 


12 


738 


1 


1708 


17 


S4 


790 


-I 


80 CTRAPRG 


8 


GE0M2 


-2 


8 


12 


737 


1 


1808 


18 


S4 


800 


-1 


81 DEF0RM 


4 


EOT 


-2 


4 


8 


157 


104 


1 


SI 


2500 


-1 


82 PARAM 


6 


PVT 





-5 


16 


-1 


2 








S3 


3960 




83 MP C ADD 


10 


GE0M4 


-2 


4 


8 


-1 




4891 


60 


S3 


4020 




84 L0AD 


9 


GE0M3 





4 


8 


-1 




4551 


61 


S3 


4060 




85 EIGR 


7 


DYNAMICS 


-2 


14 


18 


469 




307 


3 


S2 


850 





86 EIGB 


7 


DYNAMICS 


-2 


14 


18 


469 




107 


1 


S2 


850 





87 EIGC 


7 


DYNAMICS 


-2 


-4 


10 


-1 




207 


2 


S2 


870 





88 REACT 


8 


GE0M2 


2 


8 


24 


597 




5251 


62 


S4 


880 


-1 


89 


1 







8 


8 


-1 


2 






S2 


890 





90 MATSl 


3 


MPT 


-2 


4 


16 


545 




503 


5 


84 


900 


-1 


91 MATTl 


3 


MPT 





4 


16 


545 




703 


7 


S4 


900 





92 0MIT1 


10 


6E0M4 


-2 


-4 


8 


-1 




4951 


63 


S3 


3981 


-1 


93 TABLEMl 


5 


DIT 





-4 


16 


-1 




105 


1 


S2 


930 





94 TABLEM2 


5 


DIT 





-4 


16 


-1 




205 


2 


S2 


930 





95 TABLEM3 


5 


DIT 





-4 


16 


-1 




305 


3 


S2 


930 





96 TABLEM4 


5 


DIT 





-4 


16 


-1 




405 


4 


S2 


960 





97 TABLESl 


5 


DIT 


-2 


-4 


16 


-1 




3105 


31 


S2 


930 




98 TEMPO 


9 


GE0M3 





4 


12 


269 




5641 


65 


S4 


980 


_1 


99 TABLES2* 


5 


DIT 


-2 


-4 


16 


-1 




3205 


32 


S2 


930 


-1 


100 TABLES 3* 


5 


DIT 


-2 


-4 


16 


-1 




3305 


33 


S2 


930 


.] 


101 TABLES4* 


5 


DIT 


-2 


-4 


16 


-1 




3405 


34 


S2 


960 


.] 


102 MATT2 


3 


MPT 





4 


16 


525 




803 


8 


S4 


1020 


-] 


103 I1ATS2* 


3 


MPT 


-2 


4 


16 


525 




603 


6 


S4 


1020 


.1 


104 CT0RDRG 


8 


GE0M2 


-2 


4 


12 


750 




1908 


19 


S4 


1040 


_1 


105 SP0INT 


8 


GE0M2 


-2 


4 


9 


794 


5551 


49 


S4 


1050 


-1 


106 SEQD 


8 


GE0M2 


2 


-4 


9 


-1 





7508 


75 


S2 


1060 


_■) 


107 SEQDBFE 


3 


GE0M2 


2 


4 


8 


37 





4608 


46 


S2 


1070 


_] 


108 QDSEP 


8 


GE0M2 


2 


4 


8 


37 





4808 


48 


S4 


1080 


-I 


109 SPQUADl 


2 


EPT 


2 


4 


16 


221 





6502 


65 


SI 


2980 


-I 


110 SPQUAD2 


2 


EPT 


2 


4 


8 


237 





6602 


66 


SI 


3000 


_1 


111 SPQDMEM 


2 


EPT 


2 


4 


8 


237 





6302 


63 


SI 


3000 


_■) 


112 SPQDPLT 


2 


EPT 


2 


4 


12 


257 





6402 


64 


SI 


3020 


.] 


113 ZI 


13 


F0RCE 


2 


8 


12 


485 





8913 


89 


S4 


1130 


-I 


114 CTRIA3 


8 


GE0M2 


2 


8 


12 


313 


1 


3458 


41 


SI 


3360 


_] 


115 PTRIA3 


2 


EPT 


2 


-4 


8 


-1 


1 


1352 


24 


SI 


1690 


-I 


116 SETRBFE 


8 


GE0M2 


2 


4 


8 


549 





4708 


47 


SI 


1160 


-] 



12E5 

12E6 

13A1 

13A2 

13A3 

13A4 

13A5 

13A6 

13B1 

13B2 

13B3 

13B4 

13B5 

13B6 

13C1 

13C2 

13C3 

13C4 

13C5 

13C6 

13D1 

13D2 

13D3 

13D4 

13D5 

13D6 

13E1 

13E2 

13E3 

13E4 

13E5 

13E6 

21A1 

21A2 

21A3 

21 A4 

21A5 

21A6 

21B1 

21B2 

21B3 

21B4 

21B5 

21B6 

21C1 

21C2 

21C3 

21C4 

21C5 

21C6 

21D1 

21D2 

2103 

21D4 

21D5 

21D6 

21E1 

21E2 



4.5-11 



MODULE FUNCTIONAL DESCRIPTIONS 



B 



Table 1(e). Bulk Data Cards Processed by IFP Sorted by Internal Card Number. 
CD EFG HIJK LMN 



117 VECDN 

118 VECGP 

119 DMI 

120 DMIG 

121 PT0RDRG 

122 MATS 

123 DLS3AD 

124 EP0INT 

125 FREQl 

126 FREQ 

127 N0LIN1 

128 Nfi)LIN2 

129 N(ilLIN3 

130 N0LIN4 

131 RL0AD1 

132 RL(3AD2 

133 TABLEDl 

134 TABLED2 

135 SEQEP 

136 TF 

137 TIC 

138 TLtlADl 

139 TL0AD2 

140 TABLED3 

141 TABLED4 

142 TSTEP 

143 DSFACT 

144 AXIC 

145 RIN6AX 

146 CCPEAX 

147 PC0NEAX 

148 SPCAX 

149 MPCAX 

150 0MITAX 

151 SUPAX 

152 P0INTAX 

153 SECTAX 

154 PRESAX 

155 TEMPAX 

156 F0RCEAX 

157 M0MAX 

158 EIGP 

159 MASSC 

160 EDFIR 

161 DF0RM 

162 TABDMPl 

163 TABDMP2* 

164 TABDMP3* 

165 TABDMP4* 

166 FREQ2 

167 CQUAD3 

168 PQUAD3 

169 SPQUAD3 

170 SETR 

171 SPTRIAl 

172 SPTRIA2 

173 SPTRMEM 



13 


F0RCE 


2 


8 


12 


177 1 


8313 


83 


S4 


1170 


-1 


13 


F0RCE 


2 


8 


12 


585 1 


8413 


84 


S4 


1180 


-1 


12 


P!30L 





-4 


16 


-1 








S2 


1190 





14 


MATP00L 


-2 


-4 


12 


-1 


114 


1 


S2 


1200 





2 


EPT 


-2 


4 


8 


237 


2102 


21 


SI 


3000 


-1 


3 


MPT 


-2 


4 


20 


449 1 


1403 


14 


S4 


1220 


-1 


7 


DYNAMICS 


-2 


4 


8 


-1 1 


57 


5 


S3 


4060 





7 


DYNAMICS 


-2 


4 


9 


794 


707 


7 


S4 


1050 





7 


DYNAMICS 


-2 


4 


8 


705 


1007 


10 


SI 


1250 





7 


DYNAMICS 


-2 


4 


88 


-1 1 


1307 


13 


S3 


1260 





7 


DYNAMICS 


-2 


8 


12 


725 


3107 


31 


SI 


1270 





7 


DYNAMICS 


-2 


8 


12 


725 


3207 


32 


SI 


1280 





7 


DYNAMICS 


-2 


8 


12 


725 


3307 


33 


SI 


1290 





7 


DYNAMICS 


-2 


8 


12 


725 


3407 


34 


SI 


1290 





7 


DYNAMICS 


-2 


8 


8 


337 1 


5107 


51 


S3 


1310 





7 


DYNAMICS 


-2 


8 


8 


337 1 


5207 


52 


S3 


1310 





5 


DIT 


-2 


-4 


16 


-1 1 


1105 


n 


S2 


930 





5 


DIT 


-2 


-4 


16 


-1 1 


1205 


12 


S2 


930 





7 


DYNAMICS 


-1 


4 


8 


37 


5707 


57 


SI 


40 


-1 


7 


DYNAMICS 


-2 


8 


12 


-1 


6207 


62 


SI 


1360 





7 


DYNAMICS 


-2 


4 


12 


713 


6607 


66 


SI 


1370 





7 


DYNAMICS 


-2 


8 


8 


681 1 


7107 


71 


S3 


1380 





7 


DYNAMICS 


-2 


8 


16 


689 1 


7207 


72 


S3 


1390 





5 


DIT 


-? 


-4 


16 


-1 1 


1305 


13 


S2 


930 





5 


DIT 


-2 


-4 


16 


-1 1 


1405 


14 


S2 


960 





7 


DYNAMICS 




4 


8 


-1 1 


8307 


83 


SI 


1420 





3 


MPT 


-2 


4 


8 


-1 1 


53 


10 


S3 


1430 





15 


AXIC 


-2 


4 


8 


93 


515 


5 


S3 


1440 





15 


AXIC 


-2 


4 


12 


245 1 


5615 


56 


S3 


1450 





15 


AXIC 


-2 


4 


8 


645 1 


2315 


23 


S3 


1460 





2 


EPT 


-2 


4 


28 


653 1 


152 


19 


S3 


1470 





15 


AXIC 


-2 


4 


12 


485 


6215 


62 


S3 


1480 





15 


AXIC 


-2 


4 


8 


-1 


4015 


40 


S3 


1490 





15 


AXIC 


-2 


4 


8 


337 


4315 


43 


S3 


1500 





15 


AXIC 


-2 


4 


8 


337 


6415 


64 


S3 


1500 





15 


AXIC 


-2 


4 


8 


517 1 


4915 


49 


S3 


1520 





15 


AXIC 


-2 


4 


12 


177 1 


6015 


60 


S3 


1530 





15 


AXIC 


-2 


4 


12 


61 


5215 


52 


S3 


1540 





15 


AXIC 


-2 


4 


8 


237 


6815 


68 


S3 


1550 





15 


AXIC 


-2 


4 


12 


109 


2115 


21 


S3 


1560 





15 


AXIC 


-2 


4 


12 


109 


3815 


38 


S3 


1560 





7 


DYNAMICS 


-2 


4 


8 


561 


257 


4 


SI 


1580 





13 


F0RCE 


2 


4 


8 


-1 


3313 


33 


S3 


1590 


-1 


13 


F0RCE 


2 


4 


8 


37 


1513 


15 


S3 


1600 


-1 


4 


EOT 


2 


4 


8 


101 


204 


2 


S3 


1610 


-1 


5 


DIT 


-? 


-4 


16 


-1 1 


15 


21 


S2 


930 





5 


DIT 


-2 


-4 


16 


-1 1 


25 


22 


S2 


930 





5 


DIT 


-2 


-4 


16 


-1 1 


35 


23 


S2 


930 





5 


DIT 


-2 


-4 


16 


-1 1 


45 


24 


S2 


960 





7 


DYNAMICS 


-2 


4 


8 


705 


1107 


11 


SI 


1660 





8 


GE0M2 


2 


8 


12 


325 1 


2958 


40 


SI 


3460 


-1 


2 


EPT 


2 


-4 


8 


-1 1 


852 


49 


SI 


1690 


-1 


2 


EPT 


2 


-4 


8 


-1 1 


6702 


67 


SI 


1690 


-1 


8 


GE0M2 


2 


-4 


9 


-1 


7608 


76 


S2 


1060 


-1 


2 


EPT 




4 


16 


221 1 


7402 


74 


SI 


2980 


-1 


2 


EPT 


2 


4 


8 


237 


7502 


75 


SI 


3000 


-1 


2 


EPT 


2 


4 


8 


237 


7702 


77 


SI 


3000 


-1 





IJHK 

21 E3 

21E4 

21E5 

21 E6 

22A1 

22A2 

22A3 

22A4 

22A5 

22A6 

22B1 

22B2 

22B3 

22B4 

22B5 

22B6 

22C1 

22C2 

22C3 

22C4 

22C5 

22C6 

22D1 

22D2 

22D3 

2204 

22D5 

22D6 

22E1 

22E2 

22E3 

22E4 

22E6 

22E6 

23A1 

23A2 

23A3 

23A4 

23A5 

23A6 

23B1 

23B2 

23B3 

23B4 

23B5 

23B6 

23C1 

23C2 

23C3 

23C4 

23C5 

23C6 

23D1 

2302 

23D3 

23D4 

23D5 



4.5-12 (12-1-69) 



EXECUTIVE PREFACE MODULE IFP (mPUT FILE PROCESSOR) 

Table 1(f). Bulk Data Cards Processed by IFP Sorted by Internal Card Number. 
B CD EFG HIJK LMN 



IJHK 



174 SPTRBSC 


2 


EPT 


2 


4 


12 


257 


1 


7302 


73 


SI 


3020 


-1 


23D6 


175 SPTRPLT 


2 


EPT 


2 


4 


12 


257 


1 


7802 


78 


SI 


3020 


-1 


23E1 


176 SECL 


8 


GE0M2 


2 


-4 


9 


-1 





7308 


73 


S2 


1060 


-1 


23E2 


177 SECP 


8 


GE0M2 


2 


-4 


9 


-1 





7408 


74 


S2 


1060 


-1 


23E3 


178 SPTRIA3 


2 


EPT 


2 


-4 


8 


-1 


1 


7602 


76 


SI 


1690 


-1 


23E4 


179 BAR8IR 


8 


GE0M2 





4 


12 


25 


2 








SI 


100 


-1 


23E5 


180 CBAR 


8 


GE0M2 





8 


20 


73 


1 


2408 


24 


SI 


200 


-1 


23E6 


181 PBAR 


2 


EPT 





4 


24 


621 


1 


52 


20 


SI 


300 


-1 


31A1 


182 DAREA 


7 


DYNAMICS 


-2 


4 


8 


101 





27 


17 


S3 


1820 





31A2 


183 DELAY 


7 


DYNAMICS 


-2 


4 


8 


101 





37 


18 


S3 


1820 





31A3 


184 DPHASE 


7 


DYNAMICS 


-2 


4 


8 


101 





77 


19 


S3 


1820 





31 A4 


185 PLFACT 


3 


MPT 


-2 


4 


8 


- 1 


1 


1103 


11 


S3 


1430 


-1 


31 A5 


186 CGENEL 


8 


GE0M2 


2 


-4 


8 


-1 


1 


2008 


20 


S3 


1860 


-1 


31A6 


187 PGENEL 


2 


EPT 


2 


4 


8 


573 





352 


26 


SI 


1870 


-1 


31B1 


188 ELDELE 


13 


F0RCE 


2 


4 


8 


37 





1913 


19 


S3 


1600 


-1 


31B2 


189 MATT3 


3 


MPT 


-2 


4 


16 


525 


1 


1503 


15 


S4 


1020 


-1 


31B3 


190 RF0RCE 


9 


GE0M3 


-2 


8 


12 


109 





5509 


55 


SI 


1900 


-1 


31B4 


191 TABRNDl 


5 


DIT 


-2 


-4 


16 


-1 


1 


55 


25 


S2 


930 





31 B5 


192 TABRND2* 


5 


DIT 


-2 


-4 


16 


-1 


1 


65 


26 


S2 


930 





31 B6 


193 TABRND3* 


5 


DIT 


-2 


-4 


16 


-1 


1 


75 


27 


S2 


930 





31C1 


194 TABRND4* 


5 


DIT 


-2 


-4 


16 


-1 


1 


85 


28 


S2 


960 





31C2 


195 RANDPS 


7 


DYNAMICS 


-2 


4 


12 


782 





2107 


21 


S4 


1950 


-1 


31C3 


196 RANDTl 


7 


DYNAMICS 


-2 


4 


8 


752 





2207 


22 


S4 


1960 


-1 


31C4 


197 RANDT2 


7 


DYNAMICS 


-2 


-4 


8 


-1 


1 


2307 


23 


XX 


XXXX 


-1 


31C5 


198 PL0AD1 


9 


GE0M3 


-2 


- 


- 


- 


- 


6909 


69 


XX 


XXXX 


-1 


31C6 


199 PL(3AD2 


9 


6E0M3 


-2 


4 


9 


774 


6802 


68 


S4 


1990 


-1 


31D1 


200 DTI 


12 


P00L 





-4 


16 


-1 











S2 


2000 





31D2 



4.5-13 '12-1-69) 



MODULE FUNCTIONAL DESCRIPTIONS 

Table 2(a). Bulk Data Cards Processed by IFP Sorted Alphabetically by Card Name. 

The following list gives an explanation of the column headings on the following pages of 
Table 2. 

A = Internal IFP Bulk Data Card Number 

B = Bulk Data Card Name (an asterisk following a name implies the card is not available) 

C = Internal IFP GIN0 Output File Number 

D = Data Block Name 

E = Approach Acceptance Indicator 

-2 = Illegal for the Force Approach 

-1 = Not Used by the Force Approach 

= OK for any Approach 

1 = Not Used by the Displacement Approach 

2 = Illegal for the Displacement Approach 

F = Minimum Number of Words Allowed Per Logical Card (F negative implies an open ended card) 
G = Maximum Number of Words Allowed Per Logical Card 
H = Format Check Pointer Into IFX7BD 
I = Field 2 Uniqueness Check Flag 

= No Check is Made 

1 = Check is Made 

2 = Special 

J = Subroutine L0CATE Code for Card on Output Data Block 

K - Trailer Bit Position 

L = Pointer to Secondary (Card Dependent) Code 

51 = Subroutine IFSIP 

52 = Subroutine IFS2P 

53 = Subroutine IFS3P 

54 = Subroutine IFS4P 

M = F0RTRAN Statement Number in the Card Dependent Subroutines 
N = Conical Shell Problem Flag 
-1 = Illegal for Shell Mode 



4.5-14 



EXECUTIVE PREFACE MODULE IFP (INPUT FILE PROCESSOR) 

Table 2(b). Bulk Data Cards Processed by IFP Sorted Alphabetically by Card Name. 

= OK for Shell Mode 

1 = Puts Card Into Different Data Block 

= Users Map for Data Blocks IFX2BD,.. . ,IFX6BD 

Values for I = 1 ,2 or 3 
J = 1,2 or 3 
H = A.B.C.D or E 
K = 1,2,3,4,5 or 6 

1 = Is Data Statement in the Block Data Program 

J = The Group of A Through E Continuation Card Blocks Within the Ith Data Statement 
H = Alphabetic Character in Col 6 (Continuation Column) in the Jth Group 
K = The Pair Number on Line H Where the Actual Data is 



4.5-15 



MODULE FUNCTIONAL DESCRIPTIONS 



Table 2(c). Bulk Data Cards Processed by IFP Sorted Alphabetically by Card Name. 
B CD EFG HIJ KLMN 



89 


1 







8 


8 


-1 


2 






S2 


890 


144 AXIC 


15 


AXIC 


-2 


4 


8 


93 


515 


5 


S3 


1440 


179 BAR0R 


8 


GE0M2 





4 


12 


25 


2 








SI 


100 -1 


3 BEAMOR* 


8 


GE0M2 


-2 


4 


12 


25 


2 








S3 


300 -1 


180 CBAR 


8 


GE0M2 





8 


20 


73 


1 


2408 


24 


SI 


200 -1 


51 CBEAM* 


8 


GE0M2 


-2 


8 


24 


289 


1 


101 


1 


S3 


3340 -1 


146 CC0NEAX 


15 


AXIC 


-2 


4 


8 


645 


1 


2315 


23 


S3 


1460 


69 CDAMPl 


8 


GE0M2 


-2 


4 


12 


337 


1 


201 


2 


SI 


3620 -1 


70 CDAMP2 


8 


GE0M2 


-2 


4 


12 


397 


1 


301 


3 


SI 


3623 -1 


71 CDAMP3 


8 


GE0M2 


-2 


4 


8 


37 





401 


4 


SI 


3675 -1 


72 CDAMP4 


8 


GE0M2 


-2 


4 


8 


409 





501 


5 


SI 


3698 -1 


73 CELASl 


8 


GE0M2 


-2 


4 


12 


337 


1 


601 


6 


SI 


3620 -1 


74 CELAS2 


8 


6E0M2 


-2 


4 


12 


417 


1 


701 


7 


SI 


3800 -1 


75 CELAS3 


8 


6E0M2 


-2 


A 


8 


37 


801 


8 


SI 


3676 -1 


76 CELAS4 


8 


GE0M2 


-2 


4 


8 


409 





901 


9 


SI 


3699 -1 


186 CGENEL 


8 


GE0M2 


2 


-4 


8 


-1 


1 


2008 


20 


S3 


1860 -1 


65 CMASSl 


8 


6E0M2 


-2 


4 


12 


337 


1 


1001 


10 


SI 


3620 -1 


66 CMASS2 


8 


GE0M2 


-2 


4 


12 


397 


1 


1101 


11 


SI 


3623 -1 


67 CMASS3 


8 


GE0M2 


-2 


4 


8 


37 





1201 


12 


SI 


3674 -1 


68 CMASS4 


8 


GE0M2 


-2 


4 


8 


409 





1301 


13 


SI 


3697 -1 


63 C0NM1 


8 


GE0M2 





8 


28 


349 


1 


1401 


14 


SI 


3580 -1 


64 C0NM2 


8 


GE0M2 





8 


20 


377 


1 


1501 


15 


SI 


3600 -1 


47 C0NR0D 


8 


GE0M2 





8 


12 


277 


1 


1601 


16 


SI 


3260 -1 


6 C0RD1C 




6E0M1 





4 


8 


37 





1701 


17 


SI 


600 -1 


5 C0RD1R 




GE0M1 





4 


8 


37 





1801 


18 


SI 


500 -1 


7 C0RD1S 




GE0M1 





4 


8 


37 





1901 


19 


SI 


700 -1 


9 C0RD2C 




GE0M1 





12 


16 


45 


1 


2001 


20 


SI 


900 -1 


8 C0RD2R 




GE0M1 





12 


16 


45 


1 


2101 


21 


SI 


800 -1 


10 C0RD2S 




GE0M1 





12 


16 


45 


1 


2201 


22 


SI 


1000 -1 


60 CQDMEM 


8 


GE0M2 





8 


12 


325 


1 


2601 


26 


SI 


3460 -1 


59 CQDPLT 


8 


GE0M2 





8 


12 


325 


1 


2701 


27 


SI 


3460 -1 


57 CQUADl 


8 


GE0H2 





8 


12 


325 


1 


2801 


28 


SI 


3460 -1 


58 CQUAD2 


8 


GE0M2 





8 


12 


325 


1 


2901 


29 


SI 


3460 -1 


167 CqUAD3 


8 


GE0M2 


2 


8 


12 


325 


1 


2958 


40 


SI 


3460 -1 


48 CR0D 


8 


GE0M2 





4 


8 


37 





3001 


30 


SI 


3281 -1 


61 CSHEAR 


8 


GE0M2 





8 


12 


337 


1 


3101 


31 


SI 


3540 -1 


104 CT0RDRG 


8 


GE0H2 


-2 


4 


12 


750 


1 


1908 


19 


S4 


1040 -1 


80 CTRAPRG 


8 


GE0M2 


-2 


8 


12 


737 


1 


1808 


18 


S4 


800 -1 


54 CTRBSC 


8 


GE0M2 





8 


12 


313 


1 


3201 


32 


SI 


3360 -1 


52 CTRIAl 


8 


GE0M2 





8 


12 


313 


1 


3301 


33 


SI 


3360 -1 


53 CTRIA2 


8 


GE0M2 





8 


12 


313 


1 


3401 


34 


SI 


3360 -1 


114 CTRIA3 


8 


GE0M2 


2 


8 


12 


313 


1 


3458 


41 


SI 


3360 -1 


79 CTRIARG 


8 


GE0M2 


-2 


8 


12 


738 


1 


1708 


17 


S4 


790 -1 


56 CTRMEM 


8 


GE0M2 





8 


12 


313 


1 


3501 


35 


SI 


3360 -1 


55 CTRPLT 


8 


GE0M2 





8 


12 


313 


1 


3601 


36 


SI 


3360 -1 


49 CTUBE 


8 


GE0M2 





4 


8 


37 





3701 


37 


SI 


3282 -1 


62 CTWIST 


8 


GE0M2 





8 


12 


337 


1 


3801 


38 


SI 


3540 -1 


50 CVISC 


8 


GE0M2 


-2 


4 


8 


37 





3901 


39 


SI 


3283 -1 


182 DAREA 


7 


DYNAMICS 


-2 


4 


8 


101 





27 


17 


S3 


1820 


81 DEF0RM 


4 


EOT 


-2 


4 


8 


157 





104 


1 


SI 


2500 -1 


183 DELAY 


7 


DYNAMICS 


-2 


4 


8 


101 





37 


18 


S3 


1820 


161 DF0RM 


4 


EDT 


2 


4 


8 


101 





204 


2 


S3 


1610 -1 


123 DL0AD 


7 


DYNAMICS 


-2 


4 


8 


-1 


1 


57 


5 


S3 


4060 


119 DMI 


12 


P00L 





-4 


16 


-1 











S2 


1190 


120 DMIG 


14 


MATP00L 


-2 


-4 


12 


-1 





114 


1 


S2 


1200 


184 DPHASE 


7 


DYNAMICS 


-2 


4 


8 


101 





77 


19 


S3 


1820 


143 DSFACT 


3 


MPT 


-2 


4 


8 


.1 


1 


53 


10 


S3 


1430 



IJHK 
13E5 
22D6 
23E5 
11A3 
23E6 
12D3 
22E2 
13B3 
13B4 
13B5 
13B6 
13C1 
13C2 
13C3 
13C4 
31A6 
13A5 
13A6 
13B1 
13B2 
13A3 
13A4 
12C5 
11A6 
11A5 
1181 
11B3 
11B2 
11B4 
12E6 
12E5 
12E3 
12E4 
23C5 
12C6 
13A1 
21 C2 
13D2 
12D6 
12D4 
12D5 
21D6 
13D1 
12E2 
12E1 
12D1 
13A2 
12D2 
31A2 
13D3 
31 A3 
23B5 
22A3 
21E5 
21E6 
31 A4 
22D5 



4.5-16 



EXECUTIVE PREFACE MODULE IFP (INPUT FILE PROCESSOR) 

Table 2(d). Bulk Data Cards Processed by IFP Sorted Alphabetically by Card Name. 
B CD EFGHIJ KLMN 



IJHK 



200 DTI 


12 


P00L 





-4 


16 


-1 











S2 


2000 





31 D2 


160 EDFIR 


13 


F0RCE 


2 


4 


8 


37 





1513 


15 


S3 


1600 


-1 


23B4 


86 EIGB 


7 


DYNAMICS 


-2 


14 


18 


469 


1 


107 


11 


S2 


850 





13E2 


87 EIGC 


7 


DYNAMICS 


-2 


-4 


10 


-1 


1 


207 


2 


S2 


870 





13E3 


158 EIGP 


7 


DYNAMICS 


-2 


4 


8 


561 





257 


4 


SI 


1580 





23B2 


85 EIGR 


7 


DYNAMICS 


-2 


14 


18 


469 


1 


307 


3 


S2 


850 





13E1 


188 ELDELE 


13 


F0RCE 


2 


4 


8 


37 





1913 


19 


S3 


1600 


-1 


31B2 


124 EP0INT 


7 


DYNAMICS 


-2 


4 


9 


794 





707 


7 


S4 


1050 





22A4 


18 F0RCE 


9 


GE0M3 





8 


12 


109 





4201 


42 


SI 


1800 


1 


11C6 


20 F0RCE1 


9 


GE0M3 





8 


12 


121 





4001 


40 


SI 


2000 


-1 


11D2 


22 F0RCE2 


q 


GE0M3 





8 


12 


133 





4101 


41 


SI 


2200 


-1 


11D4 


156 F0RCEAX 


15 


AXIC 


-2 


4 


12 


109 





2115 


21 


S3 


1560 





23A6 


126 FREQ 


7 


DYNAMICS 


-2 


4 


8 


-1 


1 


1307 


13 


S3 


1260 





22A6 


125 FREQl 


7 


DYNAMICS 


-2 


4 


8 


705 





1007 


10 


SI 


1250 





22A5 


166 FREQ2 


7 


DYNAMICS 


-2 


4 


8 


705 





1107 


11 


SI 


1660 





23C4 


28 GENEL 


8 


GE0M2 


-2 


-4 


9 


-1 


1 


4301 


43 


S3 


2800 


_1 


11E4 


26 GRAV 


9 


GE0M3 





8 


12 


165 


1 


4401 


44 


SI 


2600 




11E2 


2 GRDSET 


1 


GE0M1 


, 


4 


12 


13 2 








S3 


200 


_"! 


11A2 


1 GRID 


1 


GE0M1 





4 


12 


1 




4501 


45 


S3 


100 


_1 


llAl 


84 L0AD 


9 


GE0M3 





4 


8 


-1 




4551 


61 


S3 


4060 




13D6 


159 MASSC 


13 


F0RCE 


2 


4 


8 


-1 




3313 


33 


S3 


1590 


_] 


23B3 


77 MATl 


3 


MPT 





4 


20 


429 




103 


1 


SI 


3860 




13C5 


78 MAT2 


3 


HPT 





8 


20 


449 




203 


2 


SI 


3880 


■ I 


13C6 


122 MAT3 


3 


MPT 


-2 


4 


20 


449 




1403 


14 


S4 


1220 


_] 


22A2 


90 MATSl 


3 


MPT 


-2 


4 


16 


545 




503 


5 


S4 


900 


^1 


13E6 


103 MATS2* 


3 


MPT 


-2 


4 


16 


525 




603 


6 


S4 


1020 


_■] 


21C1 


91 MATTl 


3 


MPT 





4 


16 


545 




703 


7 


S4 


900 




21A1 


102 MATT2 


3 


MPT 





4 


16 


525 




803 


8 


S4 


1020 


«] 


21B6 


189 mTT3 


3 


MPT 


-2 


4 


16 


525 




1503 


15 


S4 


1020 


.] 


31B3 


157 M0MAX 


15 


AXIC 


-2 


4 


12 


109 





3815 


38 


S3 


1560 




23B1 


19 M0MENT 


9 


GE0M3 





8 


12 


109 





4801 


48 


SI 


1800 




llDl 


21 M0MEMT1 


9 


GE0M3 





8 


12 


121 





4601 


46 


SI 


2000 


_] 


1103 


23 M0MENT2 


9 


GE0M3 





8 


12 


133 





4701 


47 


SI 


2200 


-I 


11D5 


17 HPC 


10 


GE0M4 


-2 


4 


8 


-1 





4901 


49 


S3 


1700 


_1 


11C5 


83 MPCADD 


10 


GE0H4 


-2 


4 


8 


-1 


1 


4891 


60 


S3 


4020 




13D5 


149 MPCAX 


15 


AXIC 


-2 


4 


8 


-1 





4015 


40 


S3 


1490 





22E5 


127 N0LIN1 


7 


DYNAMICS 


-2 


8 


12 


725 





3107 


31 


SI 


1270 





22B1 


128 N0LIN2 


7 


DYNAMICS 


-2 


8 


12 


725 





3207 


32 


SI 


1280 





22B2 


129 N0LIN3 


7 


DYNAMICS 


-2 


8 


12 


725 





3307 


33 


SI 


1290 





22B3 


130 N0LIN4 


7 


DYNAMICS 


-2 


8 


12 


725 





3407 


34 


SI 


1290 





22B4 


15 0MIT 


10 


GE0M4 


-2 


4 


8 


37 





5001 


50 


SI 


1400 


-1 


11C3 


92 0MIT 


10 


GE0M4 


-2 


-4 


8 


-1 





4951 


63 


S3 


3981 


-1 


21 A2 


150 0KITAX 


15 


AXIC 


-2 


4 


8 


337 


4315 


43 


S3 


1500 





22E6 


82 PARAM 


6 


PVT 





-5 


16 


-1 


2 








S3 


3960 





13D4 


181 PBAR 


2 


EPT 





4 


24 


621 


1 


52 


20 


SI 


300 


-1 


31A1 


32 PBEAM* 


2 


EPT 





8 


24 


197 


1 


102 


1 


SI 


2960 


-1 


12A2 


147 PC0NEAX 


2 


EPT 


-2 


4 


28 


653 


1 


152 


19 


S3 


1470 





22E3 


45 PDAMP 


2 


EPT 


-2 


4 


8 


269 





202 


2 


SI 


3200 


-1 


12C3 


46 PELAS 


2 


EPT 


-2 


4 


8 


497 





302 


3 


SI 


3240 


-1 


12C4 


187 PGENEL 


2 


EPT 


2 


4 


8 


573 





352 


26 


SI 


1870 


-1 


31B1 


185 PLFACT 


3 


MPT 


-2 


4 


8 


-1 


1 


1103 


11 


S3 


1430 


-1 


31A5 


24 PL0AD 


9 


GE0M3 





8 


12 


145 





5101 


51 


SI 


2400 


-1 


1106 


198 PL0AD1 


9 


GE0M3 


-2 


- 


. 


- 


- 


6909 


69 


XX 


XXXX 


-1 


31C6 


199 PL0AD2 


9 


GE0M3 


-2 


4 


9 


774 





6802 


68 


S4 


1990 


-1 


31D1 


11 PL0TEL 


8 


GE0M2 





4 


8 


505 





5201 


52 


SI 


nil 


-1 


11B5 


44 pmss 


2 


EPT 


-2 


4 


8 


269 





402 


4 


SI 


3200 


-1 


12C2 



4.5-17 



MODULE FUNCTIONAL DESCRIPTIONS 

Table 2(e). Bulk Data Cards Processed by IFF Sorted Alphabetically by Card Name. 
B CD EFGHIJ KLMN 



IJHK 



152 P0INTAX 


15 


AXIC 


-2 


4 


S 


517 1 


4915 


49 


S3 


1520 C 


23A2 


41 PQDMEM 


2 


EPT 





4 


8 


237 


502 


5 


SI 


3000 -1 


12B5 


40 PQDPLT 


2 


EPT 





4 


12 


257 


602 


6 


SI 


3020 -1 


12B4 


38 PQUADl 


2 


EPT 





4 


16 


221 


702 


7 


SI 


2980 -1 


12B2 


39 PQUAD2 


2 


EPT 





4 


8 


237 


802 


8 


SI 


3000 -1 


12B3 


168 PQUAD3 


2 


EPT 


2 


-4 


8 


-1 1 


852 


49 


SI 


1690 -1 


23C6 


154 PRESAX 


15 


AXIC 


-2 


4 


12 


61 


5215 


52 


S3 


1540 C 


23A4 


29 PR0D 


2 


EPT 





4 


12 


165 1 


90? 


9 


SI 


2900 -1 


11E5 


42 PSHEAR 


2 


EPT 





4 


8 


237 


1002 


10 


SI 


3000 -1 


12B6 


121 PT0RDRG 


2 


EPT 


-2 


4 


8 


237 


2102 


21 


SI 


3000 -1 


22A1 


35 PTRBSC 


2 


EPT 





4 


12 


257 1 


1102 


11 


SI 


3020 -1 


12A5 


33 PTRIAl 


2 


EPT 





4 


16 


221 1 


1202 


12 


SI 


2980 -1 


12A3 


34 PTRIA2 


2 


EPT 





4 


8 


237 


1302 


13 


SI 


3000 -1 


12A4 


115 PTRIA3 


2 


EPT 


2 


-4 


8 


-1 1 


1352 


24 


SI 


1690 -1 


21 El 


37 PTRMEM 


2 


EPT 





4 


8 


237 


1402 


14 


SI 


3000 -' 


12B1 


36 PTRPLT 


2 


EPT 





4 


12 


257 1 


1502 


15 


SI 


3020 -1 


12A6 


30 PTUBE 


2 


EPT 





4 


12 


177 1 


1602 


16 


SI 


2920 - 


11E6 


43 PTWIST 


2 


EPT 





4 


8 


237 


1702 


17 


SI 


3000 -1 


12C1 


31 PVISC 


2 


EPT 


-2 


4 


8 


189 


1802 


18 


SI 


310 - 


12A1 


108 QDSEP 


8 


GE0M2 


2 


4 


8 


37 


4808 


48 


S4 


1080 - 


21C6 


195 RANDPS 


7 


DYNAMICS 


-2 


4 


12 


782 


2107 


21 


S4 


1950 - 


31C3 


196 RANDTl 


7 


DYNAMICS 


-2 


4 


8 


752 


2207 


22 


S4 


1960 - 


31C4 


197 RANDT2 


7 


DYANMICS 


-2 


-4 


8 


-1 1 


2307 


23 


XX 


XXXX 


31C5 


88 REACT 


8 


GE0M2 


2 


8 


24 


597 1 


5251 


62 


S4 


880 - 


13E4 


190 RFjIRCE 


9 


GE0M3 


-2 


8 


12 


109 


5509 


55 


SI 


1900 


31 B4 


145 RINGAX 


15 


AXIC 


-2 


4 


12 


245 1 


5615 


56 


S3 


1450 22E1 


131 RLSIADl 


7 


DYNAMICS 


-2 


8 


8 


337 1 


5107 


51 


S3 


1310 ( 


3 2?B5 


132 RL0AD2 


7 


DYNAMICS 


-2 


8 


8 


337 1 


5207 


52 


S3 


1310 ( 


] 22B6 


176 SECL 


8 


GE0M2 


2 


-4 


9 


-1 


7308 


73 


S2 


1060 - 


1 23E2 


177 SECP 


8 


GE0M2 


2 


-4 


9 


-1 


7408 


74 


S2 


1060 - 


1 23E3 


153 SECT AX 


15 


AXIC 


-2 


4 


12 


177 1 


6015 


60 


S3 


1530 ( 


3 23A3 


106 SEQD 


8 


GE0M2 


2 


-4 


9 


-1 


7508 


75 


S2 


1060 - 


1 21 C4 


107 SEQDBFE 


8 


GE0M2 


2 


4 


8 


37 


4608 


46 


S2 


1070 - 


1 21C5 


135 SEQEP 


7 


DYNAMICS 


-1 


4 


8 


37 


5707 


57 


SI 


40 - 


1 22C3 


4 SEQGP 


1 


GE0M1 


-1 


4 


8 


37 


5301 


53 


SI 


40 - 


1 11A4 


170 SETR 


8 


GE0M2 


2 


-4 


9 


-1 


7608 


76 


S2 


1060 - 


1 23D2 


116 SETRBFE 


8 


GE0M2 


2 


4 


8 


549 


4708 


47 


SI 


1160 - 


1 2iE2 


25 SL0AD 


9 


GE0M3 


-2 


4 


8 


157 


5401 


54 


SI 


2500 - 


1 llEl 


16 SPC 


10 


GE0M4 


-2 


4 


8 


101 


5501 


55 


SI 


1600 - 


1 11C4 


12 SPCl 


10 


GE0M4 


-2 


4 


8 


-1 


5481 


58 


S3 


3980 - 


1 1186 


13 SPCADD 


10 


GE0M4 


-2 


4 


8 


-1 1 


5491 


59 


S3 


4020 


1 llCl 


148 SPC AX 


15 


AXIC 


-2 


4 


12 


485 


6215 


62 


S3 


1480 


D 22E4 


105 SP0INT 


8 


GE0M2 


-2 


4 


9 


794 


5551 


49 


S4 


1050 - 


1 21C3 


111 SPQDMEM 


2 


EPT 


2 


4 


8 


237 


6302 


63 


SI 


3000 - 


1 21 D3 


112 SPQDPLT 


2 


EPT 


2 


4 


12 


257 


6402 


64 


SI 


3020 - 


1 21D4 


109 SPQUADl 


2 


EPT 


2 


4 


16 


221 


6502 


65 


SI 


2980 - 


1 21D1 


110 SPQUAD2 


2 


EPT 


2 


4 


8 


237 


6602 


66 


SI 


3000 - 


1 21D2 


169 SPQUAD3 


2 


EPT 


2 


-4 


8 


-1 1 


6702 


67 


SI 


1690 - 


1 23D1 


174 SPTRBSC 


2 


EPT 


2 


4 


12 


257 1 


7302 


73 


SI 


3020 - 


1 23D6 


171 SPTRIAl 


2 


EPT 


2 


4 


16 


221 1 


7402 


74 


SI 


2980 - 


1 23D3 


172 SPTRIA2 


2 


EPT 


2 


4 


8 


237 


7502 


75 


SI 


3000 - 


1 23D4 


178 SPTRIA3 


2 


EPT 


2 


-4 


8 


-1 1 


7602 


76 


SI 


1690 - 


1 23E4 


173 SPTRMEM 


2 


EPT 


2 


4 


8 


237 


7702 


77 


SI 


3000 - 


1 23D5 


175 SPTRPLT 


2 


EPT 


2 


4 


12 


257 1 


7802 


78 


SI 


3020 - 


1 23E1 


151 SUPAX 


15 


AXIC 


-2 


4 


8 


337 


6415 


64 


S3 


1500 


23A1 


14 SUP0RT 


10 


GE0M4 


-2 


4 


8 


37 


5601 


56 


SI 


1400 - 


1 11C2 


162 TABDMPl 


5 


DIT 


-2 


-4 


16 


-1 1 


15 


21 


S2 


930 


23B6 


163 TABDMP2* 


5 


DIT 


-2 


-4 


16 


-1 1 


25 


22 


S2 


930 


23C1 



4.5-18 (12-1-69) 



EXECUTIVE PREFACE MODULE IFP (INPUT FILE PROCESSOR) 



Table 2(f). Bulk Data Cards Processed by IFP Sorted Alphabetically by Card Name. 



A B 


C 


D 


E 


F 


G 


H 


I 


J 


K 


L 


M 


N 




IJHK 


164 TABDMP3* 


5 


DIT 


-2 


-4 


16 


_] 




35 


23 


S2 


930 





23C2 


165 TABDMP4* 


5 


DIT 


-2 


-4 


16 


-1 




45 


24 


S2 


960 





23C3 


133 TABLEDl 


5 


DIT 


-2 


-4 


16 


-1 




1105 


11 


S2 


930 





22C1 


134 TABLLDZ 


5 


DIT 


-2 


-4 


16 


-1 




1205 


12 


S2 


930 





22C2 


140 TABLED3 


5 


DIT 


-2 


-4 


16 


-1 




1305 


13 


S2 


930 





22D2 


141 TABLED4 


5 


DIT 


-2 


-4 


16 


-1 




1405 


14 


S2 


960 





22D3 


93 TABLEMl 


5 


DIT 





-4 


16 


-1 




105 


1 


S2 


930 





21A3 


94 TABLEM2 


5 


DIT 





-4 


16 


-1 




205 


2 


S2 


930 





21A4 


95 TABLEM3 


5 


DIT 





-4 


16 


-1 




305 


3 


S2 


930 





21A5 


96 TABL[M4 


5 


DIT 





-4 


16 


-1 




405 


4 


S2 


960 





21A6 


97 TABLESl 


5 


DIT 


-2 


-4 


16 


-1 




3105 


31 


S2 


930 


-1 


21B1 


99 TABLES2* 


5 


DIT 


-2 


-4 


16 


-1 




3205 


32 


S2 


930 


-1 


21B3 


100 TABLES3* 


5 


DIT 


-2 


-4 


16 


-1 




3205 


33 


S2 


930 


-1 


21 B4 


101 TABLES4* 


5 


DIT 


-2 


-4 


16 


-1 




3405 


34 


S2 


960 


-1 


21 B5 


191 TABRNDl 


5 


DIT 


-t- 


-4 


16 


-1 




55 


25 


S2 


930 





31B5 


192 TABRN02* 


5 


DIT 


-2 


-4 


16 


-1 




65 


26 


S2 


930 





31 B6 


193 TABRND3* 


5 


DIT 


-2 


-4 


16 


-1 




75 


27 


S2 


930 





31C1 


194 TABRND4* 


5 


DIT 


-2 


-4 


16 


-1 




85 


28 


S2 


960 





31C2 


27 TEMP 


9 


GE!3M3 





4 


8 


157 





5701 


57 


SI 


2500 


-1 


11E3 


155 TEMPAX 


15 


AXIC 


-2 


4 


8 


237 





6815 


68 


S3 


1550 





23A6 


98 TEMPO 


9 


GE0M3 





4 


12 


269 





5641 


65 


S4 


980 


-1 


21B2 


136 TF 


7 


DYNAMICS 


-2 


8 


12 


-1 





6207 


62 


SI 


1360 





2?C4 


137 TIC 


7 


DYNAMICS 


-2 


4 


12 


713 





6607 


66 


SI 


1370 





22C5 


138 TL0AD1 


7 


DYNAMI6S 


-2 


8 


8 


681 




7107 


71 


S3 


1380 





22C6 


139 TL0AD2 


7D 


DYNAMICS 


-2 


8 


16 


689 




7207 


72 


S3 


1390 





22D1 


142 TSTEP 


7 


DYNAMICS 


-2 


4 


8 


-1 




8307 


83 


SI 


1420 





22D4 


117 VECDN 


13 


F0RCE 


2 


8 


12 


177 




8313 


83 


S4 


1170 


-1 


21E3 


118 VECGP 


13 


FI3RCE 


2 


8 


12 


58£ 




8413 


84 


S4 


1180 


-1 


21 E4 


113 ZI 


13 


F0RCE 


2 


8 


12 


485 





8913 


89 


S4 


1130 


-1 


21D5 



4.5-19 (12-1-69) 



EXECUTIVE PREFACE MODULE IFP3 (INPUT FILE PROCESSOR 3) 

4.6 EXECUTIVE PREFACE MODULE IFP3 (INPUT FILE PROCESSOR 3) 

4.6.1 Entry Point : IFP3 

4.6.2 Purpose 

1. To interpret Bulk Data cards unique to an axi symmetric conical shell problem. 

2. To generate and distribute to data blocks GE0M1 , GE0M2, GE0M3, and GE0M4 data cards 
for all harmonics specified in the problem. 

3. To convert the following input Bulk Data cards to the following output Bulk Data cards, 



Input Bulk Data 


Input 


Output Bulk Data 


Outnut 


Card Type 


Data Block 
AXIC 


Card Type 


Data Block 


AXIC 


None 




CC!3NEAX 


AXIC 


CC0NE 


GE0M2 


F0RCEAX 


AXIC 


F0RCE 


GE0M3 


F0RCE 


AXIC 


F0RCE 


GE0M3 


GRAV 


AXIC 


GRAV 


GE0M3 


L0AD 


AXIC 


L0AD 


GE0M3 


M0MAX 


AXIC 


M0MENT 


GE0M3 


MOMENT 


AXIC 


M0MENT 


GE0M3 


MPCADD 


AXIC 


MPCADD 


GE0M4 


MPCAX 


AXIC 


MPC 


GE0M4 


0MITAX 


AXIC 


0MIT 


GE0M4 


P0INTAX 


AXIC 


MPC 
GRID 


GE0M4 
GE0M1 


PRESAX 


AXIC 


PRESAX 


GEMM3 


RINGAX 


AXIC 


SPC 
GRID 


RE0M4 
GE0M1 


SECT AX 


AXIC 


MPC 
GRID 


GE0M4 
GE0M1 


SEQGP 


AXIC 


SEQGP 


GE0M1 


SPCADD 


AXIC 


SPCADD 


GE0M4 


SPCAX 


AXIC 


SPC 


GE0M4 


SUPAX 


AXIC 


SUP0RT 


GE0M4 


TEMP AX 


AXIC 


TEMP 


GE0M3 


TEMPO 


AXIC 


TEMPO 


GE0M3 



4.6-1 



MODULE FUNCTIONAL DESCRIPTIONS 

4.6.3 Call ing Sequence 

CALL IFP3. IFP3, a Preface module, is called only from the Preface driver SEMINT. 

4.6.4 Input Data Blocks 

AXIC - Bulk Data Deck cards as output from IFP. 

4.6.5 Output Data Blocks 

GE0M1 - Grid Point Data. 

GE0M2 - Element Connection Data. 

GE0M3 - Loading Data. 

GE0M4 - Constraint Data. 

4.6.6 Parameters 



Not applicable to IFP3. 

4.6.7 Method 

In the following a "card" is defined as the type of card image output by IFP, i.e., with 
the mneumonic stripped off and a card image, in some cases a modified card image, written on 
the output data block. 

4.6.7.1 Initialization and Overall Method 

IFP3 first determines the amount of core available, and then allocates three buffers for 
the SCRATCH, AXIC, and GE0M data blocks. The AXIC data block is opened for input using PREL0C. 
At this point the 21 types of input Bulk Data cards are found, one type at a time, on the AXIC 
data block, using the L0CATE routine. The cards of each type are converted and output to a 
GE0M data block. 

To facilitate the operation, all Bulk Data cards causing output to a particular GE0M 
data block are handled together. Thus the processing is such that all cards affecting GE0M2 
are first converted, and following these all those for GE0M3, then GE0M4, and finally GE0M1 . 

The superscripts s and c in the following refer to the sine and cosine sets respectively. 



4.6-2 



EXECUTIVE PREFACE MODULE IFPS (INPUT FILE PROCESSOR 3) 



4.6.7.2 Conversion of Input Bulk Data Cards to Output Bulk Data Cards for GE0M2. 



1. AXIC card 



■Input Card- 



AXIC Harm 



-Cutout Card- 
(None) 

The AXIC card supplies Harm which is used to compute the number of harmonics, N. 



N = Harm + 1 



(1) 



2. CC0NEAX card 



-Input Card- 



CCS3NEAX 



EL- ID 



Prop-ID 



Ring^ ID 



Ringg ID 



-N Output Cards- 



CC0NE, 



EL-ID 



Prop-ID 



Ring^ ID, 



Ringg ID^ 



where 



EL-ID^ = EL-ID X 1000 + n, 



Ring^ ID^ = Ring^ ID + 1000000 x n, 



Ringg ID^ = Ringg ID + 1000000 x n. 



(2) 
(3) 
(4) 



for n = 1, 2, .... N. 



4.6-3 



MODULE FUNCTIONAL DESCRIPTIONS 



4.6.7.3 Conversion of Input Bulk Data Cards to Output Cards for GE(iM3. 



1. F0RCE card and M0MENT card 



These two cards are output to GE0M3 as input from AXIC. 



2. FCIRCEAX card and M(3MAX card 



-Input Cards- 



FORCEAX 


Set ID 


Ring ID 


Harm ID 


Factor 


Fr 


^ 


\ 














M0MAX 


Set ID 


Ring ID 


Harm ID 


Factor 


\ 


% 


\ 



-Output Cards- 



F0RCE 


Set ID 


Ring ID^ 





Factor 


^ 


^ 


\ 






M0MENT 


Set ID 


Ring ID^ 





Factor 


"r 


9 


z 



where 



Ring IDm = Ring ID + (Harm ID + 1) x 1000000 



"H 



(5) 



If F0RCE cards and FjJRCEAX cards both exist, then the resulting output cards of the F0RCE and 
F0RCEAX cards are merged in sort on Set ID's. This applies to M0MENT and M0MAX cards also. 

3. GRAV card, L0AD card, and TEMPO card 

These three cards are output to GE0M3 as they are input from AXIC. 

4. PRESAX card 

-Input Card- 



PRESAX 



Set ID 


Value 


Ring^ ID 


Ringg ID 


*1 


h 



4.6-4 



EXECUTIVE PREFACE MODULE IFP3 (INPUT FILE PROCESSOR 3) 



-N Output Cards- 



PRESAXj^ 



Set ID 


Value 


Ring^ID^ 


RingglD^ 


*1 


h 


n 



where 



Ring^ ID = Ring^ ID + 1000000 x n 
Ringg ID^ = Ringg ID + 1000000 x n 



(6) 
(7) 



for n = 1, 2, .... N. 



5. TEMPAX card 



■Input Card- 



TEMPAX 



Set ID 


Ring ID 


*1 


^1 


*2 


^2 


*3 


^3 



-N X 2 Output Cards - 



N-TEMP 



n+1 



Set ID' 



Ring ID^^^ 



N-TEMP 



n+1 



Set ID 



Ring ID^^^ 



where 



Ri 



ing IDp+i = Ring ID + 1000000 x (n+1) 



Set ID 



Set ID 



Set ID + 100000000 



Set ID + 200000000 



(8) 

(9) 

(10) 



Ri 



for n = 0, 1 N-1. 

T^ and T^ are computed as follows. All TEMPAX cards having the same Set ID and 
ng ID are gathered together. The angles <))^ and temperatures T. are arrayed into a two- 



4.6-5 



MODULE FUNCTIONAL DESCRIPTIONS 



dimensional matrix. 



*1 


h 


h 


\ 






h 


\ 



where k is the total number of unique i))'s, and the cji's are converted to radians. 
The matrix is sorted on the <^ column, and duplicate angles are removed. 
For n = 0, we have 



^l - fc.^. (^i^T.,^) U^.T -*i). 



(n) 



and 



t; = Q- 



(12) 



For n > 



1 '^ 

- s 



^ i=l ^*i+l - ^-^ 



(^i^i.l -Ti+1 *i) ,„. 



(sin n(j)._^, - sin ncji.) 



+ — 2 — ^ (cos n^.'+i - cos n(t). + nij)-^-, sin n(|)._|^, - n()). sin n(}).)!> (13) 



and 



T^ = i Z ,,-1 
n TT '■" 



i=l ^"^i+l ^V 



(T.$.,T -T.,^<fr.) 



(-cos ntf).^^ + cos niji.) 



+ — — 2 — ^ (sin n(|).^^ - sin n<ti. - n<|).^^ cos n<}).^i + ncf.. cos n(}).)|. (14) 



4.6-6 



where 



and 



EXECUTIVE PREFACE MODULE IFP3 (INPUT FILE PROCESSOR 3) 



^k.i = *i ^2-. (15) 



^k.l = h ■ ^''^ 



4.6-7 



MODULE FUNCTIONAL DESCRIPTIONS 

4.6.7.4 Conversion of Input Bulk Data Cards to Output Cards for GE0M4 
1. SPCADD card 

-Input Card- 



SPCADD 


Set ID 


SI 


... 


S9 


-1 


>0pen-e 








-2 Output Cards- 








SPCADD^ 


Set ID^ 


SI 


... 


S9 


101 


-1 
















SPCADD*^ 


Set Id'^ 


SI 


« • • 


S9 


102 


-1 



-ended 



where 



Set ID = Set ID + 100000000 



Set ID = Set ID + 200000000 



(17) 
(18) 



The following 4 mandatory SPCADD cards are also created and put out on GE5IM4 regardless 
of whether there are or are not SPCADD cards present. 



SPCADD 


100000101 


101 


-1 






SPCADD 


200000102 


102 


-1 






SPCADD 


100000000 


101 


-1 






SPCADD 


200000000 


102 


-1 



2. MPCADD card 



All operations performed for the SPCADD card are performed for the MPCADD card. 



4.6-8 



EXECUTIVE PREFACE MODULE IFP3 (INPUT FILE PROCESSOR 3) 



3. SPCAX card 



where 



and 



where 



4. MPCAX card 



MPCAX 



Set ID 



■Input Card- 



SPCAX Set ID 



Ring ID 



Harm ID 



Comp 



Value 



-3 Output Cards- 



SPCADD^ 


Set ID^ Set ID 


101 


-1 










SPCADD^ 


Set Id'^ 


Set ID 


102 


-1 



Set ID = Set ID + 100000000 , 



Set ID = Set ID + 200000000 ; 



SPC 



Set ID 



Ring ID, 



Como 



Value 



Ring ID„ = Ring ID + (Harm ID + 1) x 1000000. 



-Input Card- 



Ring ID 



Harm ID 



Comp ID 



Value 



-1 



Repeats 



-3 Output Cards- 



MPCADD^ 


Set ID^ Set ID 


101 


-1 










MPCADD^ 


Set ID= 


Set ID 


102 


-1 



Set ID^ = Set ID + 100000000 , 



Set ID^ = Set ID + 200000000 



-1 



(19) 
(20) 



(21) 



Open 
Ended 



(22) 
(23) 



4.6-9 



MODULE FUNCTIONAL DESCRIPTIONS 



and 



MPC Set ID Ring ID^ 



Comp Value 



Repeat Group 



For each 3-word group output. 



Ri 



ing IDj^ = Ring ID + (Harm ID + 1) x 1000000, 



(24) 



5. PJIINTAX card (also processed in GE0M1 section) 



-Input Card- 



POINTAX 



ID 


Ring ID 


<t> 



-12 Output Cards- 



MPcf 


101 


ID 


i 


-1.0 








-cont- 


'^ 


i 


Coef.^ 



N 3-word groups ) s set 
(n=l to N) I i=l to 6 



-cont- 


^^n 


i 


Coef.„ 










-cont- 


-1 


-1 


-1 












MPC^ 


102 


ID 


i 


-1.0 












-cont- 


% 


i 


Coef.^ 



N 3-word qrnuos) c set 
(n=l to N) / i=l to 6 



-cont- 



IDn 


i 


Coef.^ 



-cont- 



-1 


-1 


-1 



4.6-10 



EXECUTIVE PREFACE MODULE IFP3 (INPUT FILE PROCESSOR 3) 



where the Coef. above are defined by: 
n 



i 


c set-Coef. 


s set-Coef. „ 
n 


1 (u,) 


cos {M) 


sin (n<))) 


2(V 


sin (n<})) 


-cos (ntt)) , = +1 , n = 


3 (u^) 


cos (n(t)) 


sin (n4>) 


4 (e^) 


sin (n(|)) 


-cos (net)), = +1 , n = 


5 (%) 


cos (ncf)) 


sin (ntj)) 


6 (e^) 


sin (nij)) 


-cos (ntf)), = +1 , n = 



and 



ID = Ring ID + (n x 1000000) 



(25) 



6. SECTAX card (also processed in GE0M1 section) 



•Input Card- 



SECTAX 



ID 


Ring ID 


R 


^ 


*2 



•6 Output Cards- 



c? 


101 


ID 


i 


-1.0 












ont- 


^°n 


i 


Coef.^ 



N 3-word qrouDS ) s set 
(n=l to N) / i=l to 3 



-cont- 









I°n 


i 


Coef.^ 



-cont- 



■1 -1 



4.6-11 



MODULE FUNCTIONAL DESCRIPTIONS 



MPC^ 


102 


ID 


i 


-1.0 












-cont- 


'^ 


i 


Coef.„ 



, N 3-word groups \c set 
(n=l to N) f i=l to 3 



-cont- 



ID. 



Coef. 



-cont- 



-1 


-1 


-1 



where the Coef. above are defined by: 
n 



i 


c set-Coef. 


s set-Coef. 


1 
2 

3 


^ (sin{n*2) - s1n(n(ti^)) 
or R(iti2 - 'I'l) for n=0 

- ^ (cosCnfJig) - cos(n<tii)) 
or for n=0 

J (sin(n(t>2) - sin(n*^)) 
or R((J)2 - <(>■,) for n=0 


- - (cos(n<t'2) - cos(n(fi^)) 
or for n=0 

- J (sin(n<^2) " sin(n(t)^)) 
or R(4>2 - 4),) for n=0 

- ^ (cos^iKtig) - cos(n((i^)) 
or 0, for n=0 



and 



ID = Ring ID + (n x 1000000) 



(26) 



7. 0MITAX card 



■Input Card- 



0MITAX Ring ID 



Harm ID 



Comp 



-Output card- 



0MIT Ring ID^ 



Comp 



Ri 



ing ID^ = Ring ID + (Harm ID + 1 ) x 1000000. 



(27) 



4.6-12 



EXECUTIVE PREFACE MODULE IFP3 (INPUT FILE PROCESSOR 3) 



8. SUPAX card 



-Input Card- 



SUPAX 



Rinq ID 



Harm ID 



Comp 



-Output Card- 



SUP0RT Ring ID^ 



Comp 



Ring ID^^ = Ring ID + (Harm ID + 1) x 1000000. 



(28) 



9. RINGAX card (also processed in GE0M1 section) 



-Input Card- 



RINGAX 


Ring ID 


R 


Z 


Comp 






-2 X N Output Cards- 






SPC^ 
n 


101 


Ring ID^ 


135 








where 



Ring ID^ = Ring ID + 1000000 x n. 



(29) 



for n = 1, 2, ..., N; and 



SPC 



102 


Ring ID^ 


246 






where 



Ring ID*^ = Ring ID + 1000000 x n. 



(30) 



for n = 1, 2, .... N. 



4.6-13 



MODULE FUNCTIONAL DESCRIPTIONS 



4.6.7.5 Conversion of Input Bulk Data Cards to Output Cards for GE0M1 , 



1. P0INTAX card (also processed in GE0M4 section) 



-Input Card- 



P0INTAX 



ID 


Ring ID 


<t> 



-Output Card- 



GRID ID <^ 0.0 0.0 



2. SECTAX card (also processed in GE0M4 section) 



-Input Card- 



SECTAX 



ID 


Ring ID 


R 


*1 


*2 



-Output Card- 



GRID 



ID 





R 


^1 


h 












3. RINGAX card (also processed in GE(3M4 section) 



■Input Card- 



RINGAX Ring ID R 



Comp 



-N Output Cards- 



GRID 



Ring ID^ 





R 


Z 


0.0 





Comp 






where 



Ring ID = Ring ID + 1000000 x n, 



(31) 



for n = 1, 2, .... N. 



4.6-14 



EXECUTIVE PREFACE MODULE IFP3 (INPUT FILE PROCESSOR 3) 

4.6.7.6 Order of Output for Generated Card Images 

IFP3 has the responsibility to output cards in the sort order output by IFP. This causes 
IFP3 to simultaneously process some cards. 

4.6.8 Subroutines 

4.6.8.1 Subroutine Name: IFP3B 

1. Entry Point: IFP3B 

2. Purpose: To process the cards causing output to be created for GE0M4 and GE0M1 . 

3. Calling Sequence: CALL IFP3B 

4.6.9 Design Requirements 

The design requirements are: 

1. To produce card images equivalent to those out out by IFP. 

2. To output those images on GE0M1 , GE0M2, GE0M3, GE0M4 in the prooer sort and order. 

The following C0MM0N blocks are required for data interface between subroutines IFP3 and 
IFP3B. 

1. C0MM0tVIFP3LV/ 

This C0MM0N block contains local variables common between IFP3 
and IFP3B only. 

2. C0MM0N/IFP3BD/ 

This C0MM0N block contains constants common between IFP3 and 
IFP3B and is initialized in the Block Data subprogram AXICBD, 

3. C0MM0N/IFP3ZZ/ 

This C0MM0N block defines the beginning of open-core. 

4.6. 10 Diagnostic Messages 

IFP3 error messages are all user-oriented. They pertain to Bulk Data card errors ^'or the 
axisymmetric conical shell problem, and are output in summary form by IFP3 on the system output 

file. 

4.6-15 



EXECUTIVE PREFACE MODULE XGPI (EXECUTIVE GENERAL PROBLEM miTIALIZATION) 
4.7 EXECUTIVE PREFACE MODULE XGPI (EXECUTIVE GENERAL PROBLEM INITIALIZATION). 

4.7.1 Entry Point: XGPI 

4.7.2 Purpose 

To translate (compile) a DMAP program into an internal form (the 0SCAR) for use by the 
NASTRAN Executive System, and, if restarting the problem, to initialize data blocks and named 
common blocks for proper restart of the problem. See section 2 for format of the 0SCAR. 

4.7.3 Calling Sequence 

CALL XGPI. XGPI is called only by subroutine SEMINT, the Preface driver. 

4.7.4 Method 

XGPI calls XGPIBS to initialize data for the module and to initialize the Link 
Specification table in named common block /XLINK/. Upon return from XGPIBS, XGPI loads the XCSA 
Executive Table into core from the Problem Tape. If restarting the problem, XGPI modifies 
table MEDMSK in named common block /XMDMSK/ if necessary. See discussion of the INM table 
in the description for the XCSA module, in section 4.2.6.2. 

XGPI calls X0SGEN to execute phase 1 of the DMAP program compilation. X0SGEN processes 
the DMAP instructions and generates the skeleton of the Operation Sequence Control Array (0SCAR). 
See section 2.4.2.1 for details on the format of the 0SCAR. 

XGPI calls XFL0RD to execute phase 2 of the compilation. XFL0RD fills in the 0SCAR 
entries with the information needed for allocating files (by SFA) when DMAP modules are 
executed. If restarting a problem, XFL0RD determines which data blocks are needed from the Old 
Problem Tape to restart the problem and, when necessary, turns on execute flags for DMAP 
modules to regenerate missing data blocks. 

At this point, XGPI terminates the job if any errors were found in compilation; if not, 
XGPI writes the 0SCAR onto the Data Pool File. If the problem is a restart, XGPI copies the 
data blocks specified by XFL0RD from the Old Problem Tape onto the Data Pool File and 
initializes various named common blocks. 



4.7-1 



MODULE FUNCTIONAL DESCRIPTIONS 

XGPI calls 0SCDMP to print the 0SCAR if requested by the user via the DIAG card in the 
Executive Control Deck and to position the Data Pool File at the first 0SCAR entry in preparation 
for executing DMAP modules. If checkpointing is requested by the user, the Problem Tape 
Dictionary is initialized and written on the Problem Tape. XGPI then returns to the calling 
routine SEMINT. 

4.7.5 Subroutines 

The following labeled common blocks are used to coranunicate data and constants among the 
complex of XGPI subroutines. 

1. C0MM0N/XGPIC/ - Contains 30 individual cells containing various flags, integer and BCD 
constants, and machine dependent data. Also an additional 40 cell array contains a series 
of required masks. 

2. C0MM(SN/X6PID/ - Contains restart type codes and approach type codes plus masks and flags 
required in 0SCAR generation. 

3. C0MM(8N/X6PI1/ - Defines the beginning of open core for the XGPI module and contains the 
0SCAR as it is generated. 

4. C0MM0N/XGPI2/ - Contains the MPL table (see section 2.4.2.2). 

5. C0MM0N/XGPI2X/ - Contains the default parameters required by the MPL table. 

6. C0MM0N/XGPI3/ - Contains the PVT table (see section 2.4.2.4) prior to it being written 
on the Problem Tape. 

7. C0MM0N/XGPI4/ - Contains individual DMAP cards as they are output from XRCARD plus the 
various flags and pointers required to process each DtW instruction. 

8. C0I4M0N/XGPI5/ - Contains solution, solution subset, approach and start codes along with 
data pertaining to DMAP ALTER numbers. 

9. C0MM0N/XGPI6/ - Contains various pointers into the Module Execution Decision Table, 
MED (see section 1.10). 

10. C0MM0N/XGPI7/ - Contains data pertaining to the IFILE Table (see section 4.7.6.3). 



4.7-2 



EXECUTIVE PREFACE MODULE XGPI (EXECUTIVE GENERAL PROBLEM INITIALIZATION) 



n. C0MM0N/X6PI8/ - Contains pointers into the ICPDPL Table (see section 4.7,6.3). 

Further details regarding these common blocks may be obtained from the source listings for 
XGPIBD and XGPIBS. 



4.7.5.1 X6PIDG 

1. Entry Points: XGPIDG, XGPIMW. 

2. Purposes: For XGPIDG, to write all fatal and non-fatal diagnostic messages for 
module XGPI. For XGPIMW, to write all non-diagnostic messages for module XGPI. 

3. Calling Sequences: 
For XGPIDG: 

CALL XGPIDG (NC0DE,I ,J,K) 

NC0DE - Message code number 

I,J,K - Integer values determined by NC0DE. 

For XGPIMW: 
CALL XGPIMW (MSGN0,I,J,A) 

MSGN0 - Message code number 

I, J, A - Integer values determined by MS6N0 

4.7.5.2 XGPIBS 

1. Entry Point: XGPIBS. 

2. Purpose: To initialize module data and the Link Specification table in named 
common block /XLINK/(see section 2.4). 

3. Calling Sequence: 

CALL XGPIBS 

4.7.5.3 X0SGEN 

1. Entry Point: X0SGEN. 



4.7-3 



MODULE FUNCTIONAL DESCRIPTIONS 



2. Purpose: To execute phase 1 of the compilation by translating the DMAP program 
into a skeleton Operation Sequence Control Array (lasCAR). 



3. Calling Sequence: 
CALL X0SGEN 



4.7.5.4 XLNKHD 



1. Entry Point: XLNKHD. 

2. Purpose: To generate the header section of an 0SCAR entry and for problem re- 
starts, to determine whether or not to set the 0SCAR entry execute flag. 

3. Calling Sequence: 

CALL XLNKHD 



4.7.5.5 XIPFL 

1. Entry Points: XIPFL, X0PFL. 

2. Purpose: For XIPFL, to generate the input data block section of an 0SCAR entry. 
For X0PFL, to generate the output data block section of an 0SCAR entry. 

3. Calling Sequences: 

CALL XIPFL 
CALL X0PFL 

4.7.5.6 XPARAM 

1. Entry Point: XPARAM. 

2. Purpose: To generate the parameter section of an 0SCAR entry. 

3. Calling Sequence: 

CALL XPARAM 

4.7.5.7 XSCNDM 

1. Entry Point: XSCNDM, 

2. Purpose: To scan all DMAP instructions and return to the cc'lling program each 
item in an instruction along with its identification (i.e., delimiter, BCD name. 



4.7-4 



EXECUTIVE PREFACE MODULE XGPI (EXECUTIVE GENERAL PROBLEM INITIALIZATION) 

value or end of instruction) as it is requested, 

3. Calling Sequence: 
CALL XSCNDM 



4.7.5.8 XFL0RD 



1. Entry Point: XFL0RD. 

2. Purpose: To compute the LTU (Last Time Used) and NTU (Next Time Used) values 
for the input and output sections of 0SCAR entries, and for problem restarts, to 
determine which data blocks are needed from the Old Problem Tape to restart the 
problem, 

3. Calling Sequence: 

CALL XFL0RD 



4.7.5.9 XFLDEF 



1. Entry Point: XFLDEF. 

2. Purpose: To search the Old Problem Tape reF+="'^- dictionary for a requested data 
block name and flag name if found; and if not round, and if restart is modified and the 
calling routine requests it, to attempt to regenerate the data block by turning on the 
proper 0SCAR execute flags. 

3. Calling Sequence: 

CALL XFLDEF (NAMI, NAM2. N0FIND) 

NAM1,NAM2 - Data block name (8 characters, 4 characters/word). 

N0FIND - For input, N0FIND< indicates that the calling m'ii-ine wants 
the data block regenerated if it is not in restart dictionary. 
N0FINDiO indicates no regeneration is desired. For output, 
N0FIND indicates to the calling routine what XFLDEF did. 
N0FIND < 0, the data block was regenerated. N0FIND =0, the 
data block was in the restart dictionary and was flagged for 
use in restarting the problem. N0FIND > 0, the data block 
was not found and was not regenerated. 



4.7-5 



MODULE FUNCTIONAL DESCRIPTIONS 

4,7.5.10 0SCDMP 

1. Entry Point: (3SCDMP. 

2. Purpose: To print the 0SCAR on the system output file if requested by user, and 
to position the Data Pool File at the first 0SCAR entry. 

3. Calling Sequence: 

CALL (SSCDMP (FILP0S) 
FILP0S - The number of file marks to skip over in order to be positioned at 
beginning of the 0SCAR . 

4.7.6 Design Requirements 

4.7.6.1 Open Core Layout 

The OSCAR array in named common block /XGPIl/ defines the first location in open core. 
All other arrays to be put in open core are equivalenced to 0SCAR and are offset from 0SCAR(1) 
by an amount determined at execution time. This dynamic allocation of arrays in open core 
optimizes the space available on a given machine, which means that any restrictions on data 
(except those noted below) are due to the machine's core size and not the program. 

The diagrams below show the order in which tables reside in open core during phase 1 and 
phase 2 of the compilation. 



Phase 1 



Phase 2 



0SCAR 



DMPCRD 



0SCAR 



PTDIC 



LbLTBL 



MED 



FNM 



IBUFR 



ICPDPL 



MED 



FNM 



IBUFR 



In phase 1 the final sizes of the arrays 0SCAR and LBLTBL are not known until the Df'lAP 
program has been completely scanned by X0SGEN. These two arrays request space as needed 
until it runs out. At this time the user is informed that the DMAP should be shortened or 



4.7-6 



EXECUTIVE PREFACE MODULE XGPI (EXECUTIVE GENERAL PROBLEM INITIALIZATION) 



core storage should be increased. 



4.7.6.2 Data Necessary For Operati 



on 



The Problem Tape provides Executive Tables XCSA, XALTER, PVT, and for restarts. XPTDIC 
(see section 2.4 for details). Data in named common blocks is initialized by the BLOCK DATA 
routines XMPLBD. XGPIBD and XBSBD or common block data is initialized by routine XGPIBS. 

4.7.6.3 Table Formats 

1. 0SCAR: Located in named common block /XGPIl/. See section 2.4.2.1 for format. 

2. MED, CNM, FNM: Equivalenced to the 0SCAR table. See ISl , INM and JNM table 
descriptions in XCSA Module Functional Description (4.2.6.2). 

3. PTDIC, ICPDPL: Equivalenced to 0SCAR array. 
Sample entry: 



Word 1 
2 

3 



DBN 




- 





eq' 


"et 


er 


RU 


R 

2B n 


— 


F 


- — 


S 


Jl 


30 


29 


1 6 


1 



Word 



1.2 



Item 



DBN 



R.F 



EQ 



ET 



Description 
Data block name (BCD) of the data block from the restart 
dictionary. Note, a data block name appears only once in 
the table except for table VPS where it appears twice. 

Reel number and file number where the data block is last 
located on Old Problem Tape. For XVPS there is an entry 
(the first in PTDIC) which indicates where the first XVPS 
data block is located on the Old Problem Tape. For purged 
or not-generated data blocks, R = and F = 0. 

Equivalence flag. EQ = Indicates the data block is 
equivalenced to another data block. 

End of tape flag. ET = 1 indicates that the data block is 
split across two reels of the Old Problem Tape. 

4.7-7 



Word 



MODULE FUNCTIONAL DESCRIPTIONS 

Item Description 

ER End of logical record flag. ER = 1 indicates that the 

complete logical record was written out prior to changing 

reels when ET = 1 . 
RU Reuse flag. RU = 1 indicates that this data block is to be 

used to restart the problem. 
Table ICPDPL contains all entries from PTDIC which had the RU flag set. 

4. MPL: The MPL is located in named common block /XGPI2/. See section 2.4.2.2 for details 

5. IS3RDNL: Equivalenced to MPL, the I0P.DNL table is used in phase 2 when the MPL is no 
longer needed. Data block names are entered into I0RDNL in the order that they are 
output from functional modules and IFP. 
Sample entry: 



Word 



1 
2 

3 



DBN 



"1 



[B I ^^]^^} 



AP LTU 

3 1 30 1 'I 



Word 

1,2 

3 



Item 

DBN 

LSTUSE 



TF 



LTU 



AP 



Description 
Data block name (BCD) 
Pointer to input or output section entry 
0' a functional module 0SCAR entry where the data 
block was last referenced. LSTUSE is used to fill in 
MTU's (Next Time Used) in 0SCAR entries. 
Tape flag. TP = 1 if the data block was declared TAPE 
in a FILE DMAP instruction. 

Last time used. Record number of 0SCAR entry beyond which 
the data block need not be saved for input. 
Append flag. AP = 1 if the data block was declared 
APPEND in a FILE DMAP instruction. 



6. PVT: Located in named common block /XGPI3/, 



4.7-8 



EXECUTIVE PREFACE MODULE XGPI (EXECUTIVE GENERAL PROBLEM INITIALIZATION) 



Sample entry: 



M 



CN 



PVT File 



see section zA.ZA for details. 



MN - Maximum number of words In PVT (integer). 
CN - Current number of words being used (integer). 

7. IFILE: Located in named common block /XGPI7/. The purpose of IFILE is to save 
information from FILE DMAP instructions. 





Word 


1 
2 

3 





DBN 











AP 

3 1 


TP 

1 6 


SV 

1 




Word 


Item 






Description 


1.2 


DBN 






Data block name (BCD) 


3 


SV 
TP 






SAVE flag 
TAPE flag 




AP 










APPEND flag 



4.7.6.4 Restrictions on Data 

There are only three fixed length tables which might be overflowed by excess user data. 
These tables are PVT, IFILE and I0RDNL. 

4.7.7 Diagnostic Messages 

Every effort is made to detect syntactical and logical errors in the DMAP program, and, for 
restarts, to make sure that the problem is being restarted correctly. All tables are checked 
for overflow. 

The N0G0 flag in named common block /SYSTEM/ is set according to the severity of the 
errors found. N0G0 = 1 indicates compilation is to be discontinued after phase 2. N(2G!3 = 2 



4.7-9 



MODULE FUNCTIONAL DESCRIPTIONS 



indicates a serious error and causes XGPI to terminate the program immediately. 

See the Diagnostic Message section of the User's Manual (section 6.2) for a detailed dis- 
cussion of XGPI diagnostic messages. XGPI messages include numbers 1 thru 53. 



4.7-10 



EXECUTIVE PREFACE MODULE UMFEDIT (USER MASTER FILE EDITOR) 



4.8 EXECUTIVE PREFACE MODULE UMFEDIT (USER MASTER FILE EDITOR) 



4.8.1 Entry Point : UMFEDT 



4.8.2 Purpose 



To create and manipulate User Master Files. 



4.8.3 Call ing Sequence 



CALL UMFEDT. UMFEDT is called only by SEMINT, the Preface Driver. 



4.8.4 Method 



UMFEDIT functions as a post-processor to Executive Module XS0RT. Its nrimary task is to 
generate a User Master File by repeatedly transferring sorted bulk data decks generated by XS^^RT 
from the New Problem Tape (NPTP) to the New User Master File (NUMF) based on control cards read 
from the System Input File. See section 2 of the User's Manual for a description of these 
control cards and how they control the contents of the NUMF. 

In addition to creating a User Master File, UMFEDIT is used to list and/or punch Bulk Data 
Decks from an existing User Master File (UMF). Control cards read from the System Input File 
also control this process. 

4.8.5 Subroutines 

The UMFEDIT module has no auxiliary subroutines but uses XRCARD (see section 3.4 for a 
description) . 

4.8.6 Design Requirements 

1. Open core is defined at /UMFXXX/ and is utilized as follows: 

C0MM0N/UMFXXX/ 



GIN0 


Buffer 


for 


UMF 


GIN0 


Buffer 


for 


UMF 


GINf5 Buffer 


for 


NPTP 




Unused core 



4.8-1 



MODULE FUNCTIONAL DESCRIPTIONS 

2. The Block Data subprogram UMFZBD fills /UMFZZZ/. 

3. UMFEDIT operates only in the Preface environment. The Bulk Data Deck must have been 
processed by XS0RT and accepted by the Input File Processor (IFP). 

4.8.7 Diagnostic Messages 

Bad Bulk Data Decks (indicated by AB0RT = .TRUE.) will not be accepted by UMFEDIT for 
inclusion on the NUMF. Subsequent Bulk Data Decks will be included, however, if acceptable. 

Other errors detected in UMFEDIT will result in appropriate diagnostic messages being 
written on the System Output File and termination via PEXIT. These messages are: 1703 through 
1716, 1718, 1719. 1721, 1722, 1723, and 1725 through 1737. 



4.8-2 



EXECUTIVE MODULE XSFA (EXECUTIVE SEGMENT FILE ALLOCATOR) 

4.9 EXECUTIVE MODULE XSFA (EXECUTIVE SEGMENT FILE ALLOCATOR) 

4.9.1 Entry Point : XSFA 

4.9.2 Purpose 

The Segment File Allocator (SFA) manages the data block to physical file relationships 
throughout a NASTRAN problem. Since, in general, the number of data blocks required for 
problem solution far exceeds the number of physical files available, allocation of files to 
data blocks is done dynamically as the module sequence proceeds. The SFA will allocate 
forward for as many modules as possible. A group of modules allocated by one operation of 
the SFA is termed a segment. 

4.9.3 Calling Sequence 

CALL XSFA (0SCP0S) 

0SCP0S - When input to XSFA, this integer argument is the current position (record 
number) within the 0SCAR. Upon return from XSFA, (1) if allocation was 
successful, 0SCP0S is the 0SCAR position of the end of the segment as defined 
above; (2) if allocation was unsuccessful, the input argument is set negative. 

4.9.4 Method 

SFA is called by GNFIST (see section 3.3.9 for a description of 6NFIST) when GNFIST fails 
to find the necessary data block names in the FIAT table to construct a complete FIST table 
for the next operating module (see section 2.4 for descriptions of the FIST and FIAT). 
The FIST table must contain an entry for each input, output, and scratch data block required by 
the module. SFA operates by processing the 0SCAR from its present position (next module to be 
operated) through all remaining modules. Only functional module and output processor 
(3SCAR entries flagged for execution are processed. The 0SCAR is read and processed by an 
internal subroutine named XS0SGN (Serial 0SCAR Sequence Generator) and the S|3S table is 
formed. From this table all allocation is performed. Following XS0SGN, another internal 
subroutine named XCLEAN operates. XCLEAN acts to "clean up" the FIAT and DPL tables nrior 
to the basic allocation procedure. This clean-up involves deleting data block names not 
needed for subsequent modules, removing equivalence flans if one member of an equivalent 



4.9-1 



MODULE FUNCTIONAL DESCRIPTIONS 

pair is deleted, and closing up gaps in the FIAT caused by deletions. Following operation of 
XCLEAN. basic allocation begins. Allocation is accomplished during two passes through the S0S 
table. 

Pass one first checks to see if each data block from the S0S is already in the FIAT. If so, 
it is considered allocated; otherwise the possibility of data block stacking is investigated. 
Stacking is defined as assigning two or more data blocks to the same physical file by con- 
sidering their use span. The various use span attributes available are: First-Time-Used (FTU), 
Next-Time-Used (NTU), and Last-Time-Used (LTU). Data block A may use (be stacked on) the same 
file as data block B it the first use (FTU) of data block B is subsequent to the last use (LTU) 
of data block A. Thus many data blocks may be allocated to use the same physical file if their 
use spans do not overlap. Following pass one, if any data blocks within S0S remain un-allocated, 
pass two is begun. 

Pass two first checks for files within the FIAT currently not assigned to any data block. 
These files are considered empty and are assigned to the un-allocated data blocks. Once the 
empty files are exhausted a check is made to determine if the next module to be operated has 
all its data blocks allocated to files. If the next module (at the least) is allocated, 
basic allocation is completed. If the next module has not been completely allocated, the 
second part of pass two will force pooling of sufficient data blocks to provide the necessary 
empty files for allocation of the remaining data blocks needed for the next module. Pooling 
is accomplished by flagging the data blocks for copying onto a separate file called the 
Data Pool File. The Data Pool File will therefore contain many different data blocks where 
all other files contain only one data block at a time. Data blocks are chosen for pooling 
by checking the next- time-used (NTU) attribute. The data block with the greatest NTU will 
be pooled first. Data blocks pooled are considered un-allocated; when they are subsequently 
re-allocated to their own file, they will be flagged for unpooling. 

Following basic allocation, subroutine XPUNP (Pool-Unpool ) is operated. All data blocks 
flagged for pooling are copied to the Pool File followed by all data blocks flagged for unpooling 
being copied from the Data Pool File. Lastly subroutine XDPH (Data Pool Housekeeper) operates 
to clean-up and if necessary re-copy the Data Pool File. SFA then returns control to GNFIST 
with the calling argument set negative if it was un-able to allocate the next module. Figure 1 
illustrates the functional flow. 



4.9-2 



EXECUTIVE MODULE XSFA (EXECUTIVE SEGMENT FILE ALLOCATOR) 



4.9.5 Subroutines 



XSFA performs basic allocation and its entry point, purpose and calling sequence are given 
above. Below, it should be noted that XPLEQK and XFILPS are secondary entry points in XP0LCK. 

4.9.5.1 Subroutine Name: XS0SGN (Serial 0SCAR Sequence Generator) 

1. Entry Point: XS0SGN 

2. Purpose: XS0SGN reads the 0SCAR and creates the S0S (Serial 0SCAR Sequence) and MD 
(Module Descriptor) tables. The S0S table contains the data block names and various 
attributes, while the MD table contains the 0SCAR sequence numbers and the number of 
input, output, and scratch data blocks required by each module. 

S0S Table 



# Entries 



Data Block 
Name 



a!a 
l!p 



iT ; 
LTU 1 ! NTU 
30 w! leiis 



Entry 



AL = Allocation Flag, set on by SFA 
when data block is allocated. 

AP = Append Flag, set on by module 
XGPI if data block is to be 
added to. 

LTU = Last-Time-Used, created by 

XGPI as a data block attribute. 

T = Tape Request Flag, set by XGPI 
to indicate a physical tape file 
is requested for data block. 

NTU = Next-Time-Used, created by XS0SGN 
as a data block attribute. 



MD Table 




# Entries 


0SCAR Sequence # 




# Inputs 




# Outputs 




# Scratches 


— 




" V 



' Entry 



# = Full word integer 
values for items 



4.9-3 



MODULE FUNCTIONAL DESCRIPTIONS 

Note : Items created or set by XGPI are passed via 0SCAR. 
These tables are contained within the /XSFAl/ common block. 
3. Calling Sequence: CALL XS0SGN 

4.9.5.2 Subroutine Name: XCLEAN (FIAT and DPL Clean-up) 

1 . Entry Point: XCLEAN 

2. Purpose: XCLEAN deletes data block names from the FIAT and DPL when they are no 
longer needed (their LTU has been reached). Following these deletions, equivalenced 
data blocks flags within FIAT are checked for continuing validity. If, for examole, 
one member of an equivalenced pair has been deleted, the equivalence flag on the 
remaining member is removed. Finally, empty spaces within FIAT are removed by closino 
up the table. XCLEAN also regenerates and stores various parameters into the extended 
FIAT table. Since this table is non-resident and exists only during SFA operation, 
values such as NTU and the on/off switches must be restored. 





Word 

1 




Extended FIAT 






0; 


j^ i NTU 

UX^iJJ 5 _± 


\ 




2 

3 


-N = 
+N = 


Pool rl»^ 

Unpool "^9 


1 




-1 



if" Current Module 
No 


\ Sample entry 




4 


-1 




'" Current Segment 


I (one for each FIAT entry) 




5 
6 

Item 




Allocation Type 






(Unused) 


/ 










Word 


Description 





•ITU 



On/off switch, data block is turned off following stacking 
to prevent double stacking. 

Tape request flag, copied from S0S when allocated. 

'lext-Time-Used; copied from S0S when allocated, regenerated 
by XCLEAN for data blocks remaining from previous allocation. 



4.9-4 



EXECUTIVE MODULE XSFA (EXECUTIVE SEGMENT FILE ALLOCATOR) 

Word Item Description 

2 -M Flags XPUNP to pool data block, N = number of equivalent 

names for data block (Equals 1 if data block not equi valenced) . 

+N Flags XPUNP to unpool data block, N = Data Pool File number 
of data block. 

3 Flag set yes if data block allocated for module currently 
being allocated - cleared between module allocations. 

4 Flag set yes if data block allocated for module within current 
segment - i.e., all data blocks allocated during one SFA 
operation. 

5 Allocation type - 1 = data block match, name already in FIAT 

2 = data block stackinci, name on file with 

another 

3 = empty file used for data block 

5 = data block using file freed bv nooling 
another data block 

7 = same as 5 except pooled data block is 
equi valenced 

6 Unused 

This table is contained within the /XSFAl/ common block. 

4.9.5.3 Subroutine Name: XPUNP (Pool-Unpool ) 

1. Entry Point: XPUNP 

2. Purpose: XPUNP checks the Pool and Unpool flags within the extended FIAT and performs 
the 1/0 operations necessary to copy data blocks from their separate files to the Data Pool 
File and vice-versa. Data block trailers are copied from the FIAT onto the Data Pool File 
as an additional record during pooling and are reolaced from this record during unoooling. 
All requested pooling operations are performed prior to any unpool i no operations. As data 
blocks are added to the Data Pool File, appropriate entries are added to the Data Pool 
Dictionary (DPL). The extended FIAT (4.9.5.2) is contained within the /XSFAl/ common block. 

3. Calling Sequence: CALL XPUNP 



4,9-5 



MODULE FUNCTIONAL DESCRIPTIONS 
4.9.5.4 Subroutine Name: XDPH (Data Pool Housekeeper) 

1. Entry Point: XDPH 

2. Purpose: XDPH scans the Data Pool Dictionary (DPL) to determine the number and size of 
the data blocks on the Data Pool File which have been flagged as no longer needed. If a 
sufficient quantity of data is flagged, a complete housekeeping operation is performed. 
This complete process involves re-copying the Data Pool File onto a scratch file while 
skipping those data blocks flagged for removal. Following the re-copy, the scratch file 
becomes the new Data Pool File and the old Data Pool File is released as a scratch file. 
XDPH will also perform a partial housekeeping if a (several) flagged data block(s) apoears 
as the last data block on the Data Pool File. For this oartial operation only the DPL 
entries are modified to release the pool space, no re-copy is necessary. 

3. Calling Sequence: CALL XDPH 

4.9.5.5 Subroutine Name: XP0LCK (Data Pool Dictionary Check) 

1. Entry Point: XP0LCK 

2. Purpose: XP0LCK scans the Data Pool Dictionary for a particular data block name. If 
found, the position within the dictionary and the Data Pool file number are returned to 
the calling program. 

3. Calling Sequence: CALL XP0LCK (DBNl ,DBN2,FN,L) 

where: 

DBNl, DBN2 - Request data block name (8 characters), 4 characters in each word, 
left justified and filled with blanks (if necessary). 

(0, if data block not on the Data Pool File. 



FN - \ 

(n, if data block on the Data Pool File; N = Data Pool File number. 

L - Position of data block entry within the dictionary if data block found. 
4.9.5.6 Subroutine Name: XPLEQK (Data Pool Equivalence Check) 
1 . Entry Point: XPLEQK 



4.9-6 



EXECUTIVE MODULE XSFA (EXECUTIVE SEGMENT FILE ALLOCATOR) 

2. Purpose: XPLEQK scans the Data Pool Dictionary for any equivalence to the called data 
block name. If found, a copy of the equivalent names is moved from the Data Pool 
Dictionary to the FIAT. 

3. Calling Sequence: CALL XPLEQK (P00LX,FIATX) 
where: 

P00LX - Position of data block entry within the dictionary (see argument L within 
XP8ILCK). 

FIATX - Position of same data block entry within the FIAT. 
4.9.5.7 Subroutine Name: XFILPS (Data Pool File Positioner) 

1. Entry Point: XFILPS 

2. Purpose: XFILPS positions the Data Pool File to the beginning of a requested data 
block. (The Data Pool File is a multi-file file). 

3. Calling Sequence: CALL XFILPS (FNEW) 
where: 

FNEIJ - The file count of the requested position. The current or old file nosition 
is stored in the /XSFAl/ common block, 

4.9.6 Design Requirements 

1. Open core is used only for GIN0 buffers (2 maximum). The open core origin is 
common block /ESFA/ located following all SFA subroutines. 

2. SFA communicates data internal to the module subroutines via common block /XSFAl/. 
The S0S, MD and extended FIAT tables reside in /XSFAl/. 

3. The 0SCAR must be at the entry where allocation is to begin. Following allocation, 
that initial USCAR position is restored. 

4. BLOCK DATA subprogram defines the lengths of tables in /XSFAl/. 



4.9-7 



MODULE FUNCTIONAL DESCRIPTIONS 

4.9.7 Diagnostic Messages 

Special DMAP routing may cause the warning 3022 message to be printed by SFA. 

Fonowing output of this message, SFA flags the data block as allocated (although it will 
not appear in the FIAT) and continues. Since SFA cannot predict conditional DMAP routing, the 
data block in question may not be required and the problem will proceed satisfactorily. If the 
data block is required, the problem will terminate in the requesting module. Under these circum- 
stances the DMAP routing should be studied. 

All other error messages generated by SFA are fatal in nature and indicate serious 1/0 
malfunctions or executive table overflow. See section 6 of User's Manual for listinq and 
explanation of these messages. XSFA messages include numbers 1001 through 1004, 1011 through 
1014, 1021, 1031 through 1035, 1041, and 1351. 



4.9-8 



EXECUTIVE MODULE XSFA (EXECUTIVE SEGMENT FILE ALLOCATOR) 




lA 



XSFA 




r ENTER J 

/ Can \ 
\ XS0SGN / 




nr 




/ Can \ 
\ XCLEAN / 


Next 


V 


Module 


Set anoc range to 






first/next module 



Next 
Data Block 



Pass 1 



Pick-up first/next data 
block within module 




Stack data block 
on the same file 



No 




Set data block 
as allocated 




2A 



Next 
Data Block 

► 



Yes 
Pass 2 



Pick-up first/next 
data block within module 



i 




Figure l.(a) Flowchart for module XSFA. 



4.9-9 



MODULE FUNCTIONAL DESCRIPTIONS 




Yes 




No 



-►r* 



Find the data block 
with the largest 
NTU not required 
in this module 



Use empty 

file for 

data block 




Call 
XPUNP 



No 



Set the pooling flag 
for this data block 



I 



1 



I 



Call 

XDPH 



Set ARC. NEG. 

indicating 
alloc, incomp. 



Use this now empty file 
for new data block 



c 



RETURN 



} 



Set new data block 
as allocated 




Figure l.(b) Flowchart for module XSFA. 
4.9-10 



EXECUTIVE DMAP MODULE CHKPNT (CHECKPOINT) 

4.10 EXECUTIVE DMAP MODULE CHKPNT (CHECKPOINT) 

4.10.1 Entry Point : XCHK 

4.10.2 Purpose 

To save, on the Problem Tape, specified data blocks along with other data necessary 
for restarting a problem. 

4.10.3 DMAP Calling Sequence 

CHKPNT DB1,DB2 DBN $ 

where DBl, DB2 DBN (N 2 1) are data blocks to be copied onto the Problem Tape for 

use in restarting a problem. 

4.10.4 Method 

The Problem Tape Dictionary (XPTDIC), see section 2.4.2.3, is brought into core from the 
Problem Tape, and the data block list in the CHKPNT 0SCAR entry is scanned. Data blocks that have 
been generated are entered into the local DICT table (see discussion below) along with all data 
blocks equivalenced to them. Data blocks that are purged, or have not yet been generated, 
are entered in the local PURGE table. The data blocks are assigned file numbers and are 
placed in the EDICT table. Data blocks are then copied onto the Problem Tape according to 
their file number unless the data block is equivalenced and is already in the Problem Tape 
Dictionary. Core resident data necessary for restart is also written on the Problem Tape as 
the VPS Executive Table. Entries from FDICT and PURGE are entered into the Problem Tape 
Dictionary, and the new checkpoint entries are punched for user submittal in the Executive 
Control Deck upon problem restart. The updated Problem Tape Dictionary is written back on the 
Problem Tape, and the Problem Tape is positioned to the beginning of the last file (i.e., XPTDIC) 
in preparation for the next execution of the CHKPNT module. 

4.10.5 Subroutine 

Module XCHK has no auxiliary subroutines. 



4.10-1 



MODULE FUNCTIONAL DESCRIPTIONS 

4.10.6 Design Requirements 

4.10.6.1 Open Core Layout 

Named common block /ESFA/ defines the start of the open core area. The use of open core 
1s optimized by origining arrays GBUF, PTDIC and I0BUF at /ESFA/ and computing their offset 
from the origin at execution time. The diagram below shows how the arrays are placed in open 
core. 



C0MM0N /ESFA/ 





Problem Tape Dictionary 




Utility buffer 




Data Block GIN0 buffer 




Data Pool File GIN0 buffer 




Problem Tape GIN0 buffer 



PTDIC(PTDt0P) 

I0BUF(I0PNT) 

■GBUF(FPNT) 

GBUF{DPPNT) 

GBUF(NPTPNT) 



4.10.6.2 Data Necessary for Operation 

The data blocks, named common blocks and files needed by the CHKPNT module are listed 
below, along with type of access required (i.e. fetch and/or store data) and reasons for use. 

1. Data Pool File - fetch data blocks to be copied onto the Problem Tape. 

2. Problem Tape - fetch and store data blocks. 

3. Executive Table XPTDIC - fetch and store. Used to generate new checkpoint entries 
which are then added to XPTDIC. 

4. Cornnon /XFIST/ - store temporary entry in FIST for copying data blocks. 

5. Common /0SCENT/ - fetch. CHKPNT i^SCAR entry resides here. 

6. Common /XCEITB/,/XVPS/ and /SYSTEM/ - fetch. Contains data to be written in VPS 
Executive Table. 

7. Common /XFIAT/ and Common /XDPL/ - fetch. Contains data block names of data blocks 
to be copied. 

8. Common /0UTPUT/ - store. Prints out page heading for Checkpoint Dictionary printout. 

9. Cornnon /STAPID/ - fetch and store. Used to write Problem Tape ID file on new reel of 
of the Problem Tape when an end of reel is encountered. 



4.10-2 



EXECUTIVE DMAP MODULE CHKPNT (CHECKPOINT) 

4.10.6.3 Formats of Local Arrays 

1. DICT table 

The purpose of the DICT table is to hold preliminary data to be used in generating the 
FDICT table. 

Sample DICT entry: 



Word 
1.2 



Item 



DBN 



EQ 



FA 



DP 



FP 



ID 



Word 1 
2 

3 



2. FDICT table 



EQ 


FA 


DP 

30 


DBN 
FP 


ID 

_L6_.. 



Description 

BCD name (8 characters, 2 words) of the data block whose status is 

generated and is to be checkpointed. 

Equivalence flag. EQ = 1 indicates all data blocks equivalenced to 

this data block also reside in DICT table. 

File number assigned flag. FA = 1 indicates that an FDICT entry has 

been generated for this DBN and that a file number of where the data block 

will reside on the Problem Tape has been assigned. 

Data pool flag. DP = 1 indicates that the data block is on the Data Pool 

File. 

Varies according to DP flag. For DP = 1, FP is not used. For DP = 0, 

FP is a pointer to the FIAT entry containing DBN or equivalenced DBN. 

Varies according to DP flag. For DP = 1 , ID is the file number where 

the data block resides on the Data Pool File. For DP = 0, ID is the file 

(unit) identifier. For the IBM 7094, ID is the unit control block pointer 

for the file. For machines using the F0RTRAN GIN0, ID is the F0RTRAN 

logical unit number assigned to the file. 



The purpose of the FDICT table is to hold final data to be used in generating XPTDIC entries 
for data blocks whose status is generated. 

4.10-3 



MODULE FUNCTIONAL DESCRIPTIONS 



Sample FDICT entrv: 

Word 1 
2 



DBN 


— _ 


Tq~1t' 


ER 


R 


- — 


F 


i. . 


^1 


ii. 


J9 17 


16 


-.i 



Word Item Description 

1,2 DBN BCD name of data block. 

EQ Equivalence flag. EQ = 1 indicates all data blocks equivalenced to 

this data block also reside in the FDICT table. 

ET End-of-tape flag. ET = 1 indicates that the data block is split 

across two reels of Problem Tape. 

ER End-of-logical -record flag. ER = 1 indicates that the complete 

logical record was written out prior to changing reels when ET = 1 . 
3 R,F Reel number and file number where the data block will be written on 

the Problem Tape. 

4.10.6.4 Restrictions 

XPTDIC cannot be written across two reels of Problem Tape (i.e. a fatal error occurs if 
an end-of-tape is encountered while writing XPTDIC). 

4.10.7 Diagnostic Messages 

See Diagnostic Message section of User's Manual (section 6.2) for a detailed discussion of 
CHKPNT module diagnostic messages. XCHK messages include numbers 1101 through 1109. 



4.10-4 



EXECUTIVE DMAP INSTRUCTION REPT (REPEAT A GROUP OF DMAP INSTRUCTIONS) 

4.11 EXECUTIVE DMAP INSTRUCTION REPT (REPEAT A GROUP OF DMAP INSTRUCTIONS) 

4.11.1 Entry Point : XCEI 

The XCEI module executes the DMAP control instructions: REPT, EXIT, C0ND and JUMP. 

4.11.2 Purpos e 

To repeat a group of DMAP instructions a specified number of times. 

4.11.3 DMAP Calling Sequence 

REPT n.c S 
where: 

1. n is a BCD name appearing in a LABEL instruction which specifies the location of th-. 
beginning of the group of DMAP instructions to be repeated. 

2. c is an integer constant which specifies the number of times to repeat the 
instructions. 

4.11.4 Example 
BEGIN $ 



LABEL LI $ 

M0DULE1 A/B/V,Y,P1 $ 



M0DULEN B/C/V,Y,PN $ 
REPT LI, 3 $ 



END 



4.11-1 



MODULE FUNCTIONAL DESCRIPTIONS 

The DMAP instructions from MjIDULEl to M0DULEN will be repeated 3 times. Note that REPT 
is placed at the end of the group of instructions to be repeated. 

4.11.5 Method 

Executive Table CEITBL in named common block /XCEITB/ (see section 2.4 for format) is 
Huched for the REPT entry and the entry is updated after determining whether or not to repeat 
Uie loop again. If the loop is not to be repeated, a return is made to the calling routine. If 
d repeat of the loop is to be executed, the Problem Tape Dictionary (XPTDIC) is read into core 
from the Problem Tape, and dictionary entries created inside the loop are deleted. The updated 
XPTDIC is written back on the Problem Tape. Data blocks that are referenced only inside the loop 
and which have not been declared saved in a FILE DMAP instruction have their status changed to 
not-generated (i.e. data block trailers within FIAT are cleared and if the data block name appears 
in the DPL it is removed). The 0SCAR on the Data Pool Tape is positioned to the top of loop and 
a return is made to the calling routine. 

4.11.6 Subroutine 

4.11.6.1 Subroutine Name: XCEI. 

1. Entry Point: XCEI 

2. Purpose: To execute DMAP Control modules REPT, JUMP, C0ND, and EXIT as described 

in the respective Executive DMAP Module Descriptions in this section and in sections 4.12, 
4,13 and 4.14. 

3. Calling Sequence: 

CALL XCEI 

4.11.7 De sign Requrements 
4.11.7.1 Open Core Layout 

Named coimon block /ESFA/ defines the start of the open core area. The following 
diagram shov/s the layout. 

C0MM0N/ESFA/ 



Data Pool File GIN|3 buffer area. 



Problem Tape GINO buffer area. 



Problem Tape Dictionary (XPTDIC). 



4.11-2 



EXECUTIVE DMAP INSTRUCTION KEPT (REPEAT A GROUP OF DMAP INSTRUCTIONS) 
4.11.7.2 Data Necessary For Operation 

The tables, named common blocks and files needed by the control modules are listed 
below, along with type of access required (i.e. fetch and/or store data) and reasons for use. 

1. Data Pool File - XCEI must re-position the 0SCAR to the correct entry when a 
transfer is to be executed. 

2. Problem Tape - fetch and store the Problem Tape Dictionary when looping. 

3. Data Block XPTDIC - fetch and store. The Problem Tape Dictionary must be updated 
when looping, 

4. C0MMi3N /XVPS/ - fetch. 

/XVPS/ contains the C0ND instruction parameter value. 

5. C0MM(3N /XCEITB/ - fetch and store. 

/XCEITB/ contains control parameters for REPT and EXIT instructions. 

6. C0MM0N /0SCENT/ - fetch. 

/0SCENT/ contains the Control Module 0SCAR entry. 

7. C0MM(3N /XFIAT/ - fetch and store. 

Must be updated when looping. 

8. C0MM8)N /XDPL/ - fetch and store. 

Must be updated when looping. 



4.11-3 



EXECUTIVE DMAP INSTRUCTION JUMP (UNCONDITIONAL DMAP TRANSFER) 

4.12 EXECUTIVE DMAP INSTRUCTION JUMP (UNCONDITIONAL DMAP TRANSFER) 

4.12.1 Entry Point : XCEI 

4.12.2 Purpose 

To alter the normal order of execution of DMAP modules by unconditionally transferring 
program control to a specified location in the DMAP program. 

The normal order of execution of DMAP modules is the sequential order of occurrence of 
the modules as DMAP instructions in the DMAP program. 

4.12.3 DMAP Calling Sequence 
JUMP n $ 

where n is a BCD name appearing on a LABEL instruction which specifies where control is to be 
transferred. 

4.12.4 Method 

If control is being transferred to a previous DMAP module in the 0SCAR (i.e., looping), 
the Problem Tape Dictionary is read into core from the Problem Tape and dictionary entries 
created inside the loop are deleted. The updated Problem Tape Dictionary is written back out on 
the Problem Tape. Data blocks that are referenced only inside the loop and which have not 
been declared saved in a FILE DMAP instruction have their status changed to not-generated. 
The 0SCAR is positioned to the specified location. Table CEITBL in named corrnion block /XCEITB/ 
is searched for REPT entries and the loop count is zeroed if the jump is transferring control 
from inside the loop to outside the loop. A return is then made to the calling program. 

If control is being transferred to a subsequent DMAP module in the 0SCAR, the 0SCAR is 
positioned to the specified location and a return is made to the calling program. 

See description of the Executive DMAP instruction REPT (see section 4.11) for further details. 



4.12-1 



EXECUTIVE DMAP INSTRUCTION C0ND (CONDITIONAL TRANSFER) 

4.13 EXECUTIVE DMAP INSTRUCTION C0ND (CONDITIONAL TRANSFER) 

4.13.1 Entry Point : XCEI 

4.13.2 Purpose 

To alter the normal order of execution of DMAP modules by conditionally transferring 
program control to a specified location in the DMAP program. 

4.13.3 DMAP Calling Sequence 

C(3ND n.V $ 
where: 

1. n is a BCD name appearing on a LABEL instruction which specifies where conti ol is to r,o 
transferred. 

2. V is a BCD name of a variable parameter whose value indicates whether or not to £.;.-ociii-p 
the transfer. If V < 0, the transfer is executed. 

4,13.4 Example 
BEGIN $ 



C0ND Ll.K $ 

M0DULE1 A/B/V,Y,P1 $ 



LABEL LI $ 
M0DULEN X/Y/ $ 



END $ 

If Ki 0, M0DULE1 is executed. If K< control is transferred to LI and M0DULEM is 

executed. 



MODULE FUNCTIONAL DESCRIPTIONS 



The parameter value for the C0ND instruction is examined. If the value is greater 
,yn or equal to zero, a return is made to the calling routine. If the value is less than 
:;o, the C0ND instruction is executed exactly like the JUMP instruction. See description 
f the Executive DMAP instruction JUMP (section 4.12) for further details. 



4.13-2 



EXECUTIVE DMAP INSTRUCTION EXIT (TERMINATE DMAP PROGRAM) 

4.14 EXECUTIVE DMAP INSTRUCTION EXIT (TERMINATE DMAP PROGRAM) 

4.14.1 En try Point : XCEI 

4.14.2 Purpose 

To terminate a NASTRAN job. 

4.14.3 DMAP Calling Sequence 

EXIT c $ 

where c is an integer constant which specifies the number of times the instruction is to 
be ignored before terminating the program. If c = the calling sequence may be shortened 
to EXIT $. 

4.14.4 Example 
BEGIN $ 



LABEL LI $ 
M0DULE1 A/B/V,Y,P1 



EXIT 3 $ 
REPT LI, 3 $ 



END $ 



The EXIT instruction will be executed the third time the loop is repeated (i.e., the 
instructions within the loop will be executed four times). 



4.14-1 



MODULE FUNCTIONAL DESCRIPTIONS 

4.14.5 Method 

A determination is made whether or not to terminate the job by examining the loop count cf 
the EXIT entry in named common block /XCEITB/. If the job is to be terminated, routine PEXIT 
is called; if not. the loop count in the EXIT entry is incremented, and a return is made to the 
calling program. 

See description of the Executive DMAP instruction REPT (section 4.11) for further details. 



4.14-2 



EXECUTIVE DMAP MODULE SAVE (SAVE VARIABLE PARAMETER VALUES) 
4.15 EXECUTIVE DMAP MODULE SAVE (SAVE VARIABLE PARAMETER VALUES) 

4.15.1 Entry Point : XSAVE 

4.15.2 Purpose 

To specify which variable parameter values are to be saved from the preceding functional 
module for use by subsequent modules. 

4.15.3 DMAP Calling Sequence 
SAVE VI, V2 VN $ 

where V1.V2,...,VN (Nil) are the BCD names of some or all of the variable parameters which 
appear in the immediately preceding functional module DMAP instruction. A SAVE DMAP instruction 
must immediately follow the functional module instruction wherein the parameters being saved 
are generated. 

4.15.4 Method 

The specified parameter values are transferred from blank common to the VPS Executive 
Table located in named common block /XVPS/. See description of the 0SCAR in section 2.4.2.1 
for the format of a SAVE 0SCAR entry. 

4.15.5 Subroutine 

The XSAVE module has no auxiliary subroutines 

4.15.6 Design Requirements 

SAVE must access blank common and named common blocks /XVPS/ and /0SCENT/. 



4.15-1 



EXECUTIVE DMAP MODULE PURGE (EXPLICIT DATA BLOCK PURGE) 

4.16 EXECUTIVE DMAP MODULE PURGE (EXPLICIT DATA BLOCK PURGE) 

4.16.1 Entry Point : XPURGE 

4.16.2 Purpose 

To flag a data block so that it will not be allocated to a physical file and so that 
modules attempting to access it will be signaled. 

4.16.3 DMAP Calling Sequence 

PURGE DBN1A,DBN2A,D3N3A/PARMA/DBN1B.DBN2B/PARMB $ 

Note : The number of data block names (DBNia) prior to each parameter (PARMa) and the 
number of sets of data block names and parameters in a particular calling 
sequence is variable. 

4.16.4 Input Data Blocks 

DBNIA, DBN2A, etc. - Any data block names appearing within the DMAP sequence. 

4.16.5 Output Data Blocks 

(None specified or permitted) 

4.16.6 Parameters 

PARMA, etc. - One required for each data block name or set of names. 

4.16.7 Method 
4.16.7.1 Summary 

The data blocks (within the DMAP calling sequence) are purged if the value of the asso- 
ciated parameter is < 0. If the data blocks are already purged and the parameter value is > 0, 
the purged data blocks are unpurged so that they may be subsequently reallocated. If the data 
blocks are not purged and if the parameter value is > 0, no action is taken. 



4.16.1 



ion 



MODULE FUNCTIONAL DESCRIPTIONS 

4.16.7.2 Functional Flow 

PURGE operates by modifying entries within the FIAT (File Allocation Table) and DPL 
(Data Pool Dictionary). The FIAT contains an upper section (unique part) and a lower sectic 
(tail part). Both parts contain entries structured as described in the Executive Table 
description for the FIAT, section 2.4.1.2. The length of the unique part is defined by the unique 
files available count in the FIAT header. The tail part is defined as the remainder of the 
FIAT. The unique part contains one entry for each unique (separate) file available for allo- 
cation, and the file ID's within these entries are not modified through a NASTRAN run. The 
tail part contains entries for stacked files (see description for Executive ModuleXSFA, section 4.9) 
purged files, and members of equivalenced sets. An entry within the FIAT is purged by flagging 
(setting all bits on) its file ID. Therefore, if a data block within the unique part is to 
be purged, its name is moved to the tail. A data block entry within DPL is purged by removing 
its entry from the DPL. A data block which is already purged is unpurged by removing the flagged 
entry from the FIAT so that it may be subsequently allocated to a physical file. Figure 1 
illustrates the logic flow. 

4.16.8 Design Requirements 

1. No open core is required by this module. 

2. The 0SCAR record containing the DMAP purge request must reside in the labeled 
common block /0SCENT/. 

3. The validity of all data block names and controlling parameters is checked during 
NASTRAN initialization by module XGPI. 

4.16.9 Diagnostic Messages 

PURGE may produce the following System Fatal messages: 

1201, FIAT 0VERFL0W 

1202, DPL 0VERFL0W 

Both of these messages indicate that the assembled size of the particular table has 
been exceeded. Although it is unlikely that either message will occur, a study of the 
erroneous problem's operation along with diagnostic prints of the FIAT and DPL, obtained 
via the DIAG Executive Control card (see User's Manual, section 2), should indicate some 

4.16-2 



EXECUTIVE DMAP MODULE PURGE (EXPLICIT DATA BLOCK PURGE) 

corrective action. Possible corrective actions include: increasing the basic table size 
through re-assembly; providing more physical files to the NASTRAN system; and altering the 
DMAP operations. 



4.16-3 



MODULE FUNCTIONAL DESCRIPTIONS 



PURGE 



c 



ENTER 



I 



3 



Pick-up data block 

name from purge 

entry in 0SCAR 



Search total 

FIAT for data 

block name 



Set purge 
flag on 




Clear data block 

name from unique 

part of FIAT 



Unique 



Yes 





Create a 

purged entry 

for the data 

block in the 

FIAT tail 




Unpurge 
(Remove data block 
name from FIAT) 



Remove data block 
name from the DPL 




Are there^ 

more data 

^block names in the purge^ 

entry in 

0SCAR 



<: 



Go back 
to ENTER 



) 



No 



RETURN 



1 



Figure 1. Flowchart for module PURGE. 



4.16-4 



EXECUTIVE DMAP MODULE EQUIV (DATA BLOCK NAME EQUIVALENCE) 

4.17 EXECUTIVE DMAP MODULE EQUIV (DATA BLOCK NAME EQUIVALENCE) 

4.17.1 Entry Point : XEQUIV 

4.17.2 Purpose 

To attach one or more equivalent (alias) data block names to an existing data block so that 
module accesses to data by equivalenced names will be identical. 

4.17.3 DMAP Calling Sequence 

EQUIV DBN1A,DBN2A,DBN3A/PARMA/DBN1B,DBN2B/PARMB $ 

Note : The number of data block names (DBNia) prior to each parameter (PARMa) and the 
number of sets of data block names and parameters in a particular calling sequence are 
variable. 

4.17.4 Input Data Blocks 

DBNIA, DBN2A, etc. - Any data block names appearing within the DMAP sequence. The 1st 
data block name in each series (DBNIA and DBNIB) is primary and the 2nd, etc. data block 
names become equivalent to the primary. 

4.17.5 Output Data Blocks 

(None specified or permitted) 

4.17.6 Parameters 

PARMA, etc. - One required for each set of data block names. 

4.17.7 Method 

4.17.7.1 Summary 

The data block names are made equivalent if the value of the associated parameter is < 0. 
If a set of data blocks is already equivalenced and the parameter value is ^ 0, the equivalence 
is broken and the data block names again become unique. If the data blocks are not equivalenced 
and if the parameter value is > 0, no action is taken. 



4.17-1 



MODULE FUNCTIONAL DESCRIPTIONS 

4.17.7.2 Functional Flow 

EQUIV operates by modifying entries within the FIAT (File Allocation Table) and DPL (Data 
Pool Dictionary). The FIAT contains an upper section (unique part) and a lower section (tail 
part). Both parts contain entries structured as described in the Executive Table descriotlon 
for the FIAT, section 2.4. The length of the unique part is defined by the unique files 
available count in the FIAT header. The tail part is defined as the remainder of the FIAT. 
The unique part contains one entry for each unique (separate) file available for allocation 
and the file ID'S within these entries are not modified through a NASTRAN run. The tail part 
contains entries for stacked files (see description for Executive Table XSFA). purged files and 
members of equlvalenced sets. Entries within the FIAT and DPL are made equivalent by setting 
their EQUIV flags (sign bit within an entry) and making their file ID's identical. Since a data 
block within the unique part of the FIAT must have a unique file ID. only one member of an equiva- 
lence set may reside within the unique section, all others will be placed In the FIAT tall. Thus, 
if two cata blocks occupying unique physical files are equlvalenced. one will be moved to the 
FIAT tail. Data blocks previously equlvalenced are un equlvalenced (broken) by removing the 
EQUIV flags and the secondary entries. When two or more data blocks are equlvalenced, the first 
data block of the set is considered the primary data block. All others are considered secondary. 
The file containing the primary data block Is logically attached to all data blocks in the set: 
primary and secondary. Data on files attached to secondary data blocks prior to equivalenclno 
is lost upon equivalence. If the primary data block is purged, the secondary(s) will be nurged. 
Figure 1 illustrates the logic flow. 

4.17.8 Design Requirements 

1. No open core is required by the module. 

2. The S3SCAR record containing the DMAP EQUIV request must reside in the labeled 
common block /(3SCENT/ . 

3. The validity of all data block names and controlling parameters is checked during 
NASTRAN initialization by XGPI. 

4. XEQUIV is an entry point in XPURGE. 



4.17-2 



EXECUTIVE DMAP MODULE EQUIV (DATA BLOCK NAME EQUIVALENCE) 

4.17.9 Diagnostic Messages 

EQUIV may produce the following System Fatal Messaoes: 

1201 FIAT 0VERFLQIW 

1202 DPL eiVERFL0W 

Both of these messages indicate that the assembled size of the particular table has been 
exceeded. Although it is unlikely that either message will occur, a study of the erroneous 
problem's operation along with diagnostic prints of the FIAT and DPL obtained, via the DIAG 
Executive Control card (see User's Manual, section 2), should indicate some corrective action. 
Possible corrective actions include: increasing the basic table size through re-assembly; 
providing more physical files to the NASTRAN system; and altering the DMAP operations. 



4.17-3 



MODULE FUNCTIONAL DESCRIPTIONS 



ENTER 



EQUIV 



Pick-Up Data Block 
Name from EQUIV 
Entry in (3SCAR 



Search Total FIAT 
for Data Block Name 




RETURN 



Figure 1. (a) Flowchart for EQUIV module 
4.17-4 



,•// 



EXECUTIVE DMAP MODULE EQUIV (DATA BLOCK NAME EQUIVALENCE) 




Set Primary Data 

Block EQUIV Flag 

in FIAT 




Set Primary Data 

Block EQUIV Flag 

in DPL 




Unequivalence 

(Clear Secondary 

Data Block from 

FIAT) 




Clear Stacked 

Data Block Names 

from FIAT 




Yes 



Clear Data Block 
from DPL 




lA 




lA 



Figure 1. (b) Flowchart for EQUIV module 



4.17-5 



MODULE FUNCTIONAL DESCRIPTIONS 





3B 



Tail 



Equivalence 

Secondary Data 

Block to Primary 



Unique 



Clear Data Block 

Name from Unique 

Part of FIAT 



Add Secondary 

Data Block Entry 

in FIAT Tail 




Clear Secondary 

Data Block Name 

from DPL 




lA 



Figure 1. (c) Flowchart for EQUIV module 



4.17-6 



EXECUTIVE DMAP INSTRUCTION END (END OF DMAP PROGRAM) 

4.18 EXECUTIVE DMAP INSTRUCTION END (END OF DMAP PROGRAM) 

4.18.1 Entry Point : XCEI 

The XCEI module executes the DMAP control instructions: REPT, EXIT, C0ND, and JUMP. 

4.18.2 Purpose 

To denote the end of a DMAP program. This DMAP instruction performs a function 
similar to an END statement in a F0RTRAN compilation, i.e., to signal the end of the 
source program. 

4.18.3 DMAP Calling Sequence 

END $ 

Note : An END DMAP instruction is operationally equivalent to an EXIT $ or EXIT $ 
DMAP instruction. 

4.18.4 Method 

The END instruction is translated during a DMAP program compilation in module XGPI 
into an EXIT $ Instruction, (see section 4.14). 



4.18-1 



EXECUTIVE DMAP MODULE PARAM (PARAMETER PROCESSOR) 



4.19 EXECUTIVE DMAP MODULE PARAM (PARAMETER PROCESSOR) 



4.19.1 Entry Point : QPAFAM 



4.19.2 Purpose 



To perform specified arithmetic and logical operations on DMAP parameters. 



4.19.3 DMAP Calling Sequence 



PARAM //C.N,0P/V,M,0UT/V.N,irn/V,N,IN2 $ 



where the following operations (0P) are available: 



0P 


0UT 


INI 


IN2 


AND 


-1 


< 


< 




+1 


< 


> 




+1 


^ 


< 




+1 


2. 


2. 


0R 


-1 


< 


< 




-1 


< 


>. 




-1 


> 


< 




+ 1 


2 


> 


ADD 


IN1+IN2 






SUB 


IN1-IN2 






MPY 


IN1*IN2 






DIV 


IN1/IN2 






N0T 


-INI 




* 


IMPL 


-1 


< 


< 




+ 1 


< 


> 




-1 


> 


> 




-1 


>. 


2 C 


N0P 


^UT 


* 


* 



Integer Arithmetic 



4.19-1 



MODULE FUNCTIONAL DESCRIPTIONS 

Notes : 

1 . *not used. 

2. PARAM does its own SAVE; therefore, a DMAP SAVE Instruction is not needed 
following the module. 

3. PARAM has no input or output data blocks. 

4.19.4 Examples 

1. PARAM //C,N,N0P/V,N,P1=5 $ - this example sets the value of parameter PI to 5 
and saves it in the VPS. 

2. PARAM //C,N,N0T/V,N,XYZ/V,N,N0XYZ $ - this example changes the sense of 
parameter N0XYZ which may be useful for the C0ND or EQUIV instructions. Alternatively, 
XYZ could have been set in the following way: 

PARAM //C,N,MPY/V.N,XYZ/V,N,N0XYZ/C,N,-1 $ 

4.19.5 Method 

QPARAM performs the indicated parameter operation and stores the result in the VPS 
(/XVPS/). 

4.19.6 Diagnostic Messages 

0PERATI0N C0DE N0T DEFINED F0R M0DULE PARAM. EXECUTI0N TERMINATED. 

The listed operation code was not recognized by PARAM. 



4.19-2 



EXECUTIVE DMAP MODULE SETVAL (SET VALUES) 

4.20 EXECUTIVE DMAP MODULE SETVAL (SET VALUES) 
4.20.1 Entry Point : SETVAL 
4 . 20 . 2 Purpose 

To set DMAP parameters equal to other DMAP parameters or to constants. 

4 . 20 . 3 DMAP Calling Sequence 

SETVAL //V,N,X1/V,M,Y1/V.N,X2/V.N,Y2/V,N.X3/V,N,Y3/V,N,X4/V,N,Y4/V,N,X5/V,N.Y5 $ 

4.20.4 Input Data Blocks 
None. 

4 . 20 . 5 Output Data Blocks 
None. 

4.20.6 Parameters 

XI, X2, X3, X4, X5 - Output-integers-no default values. 
Y1, Y2, Y3, Y4, Y5 - Input-integers-default values = -1. 

4.20.7 Method 

This module does nothing except set XI = Yl , X2 = Y2, X3 = Y3, X4 = Y4, and X5 = Y5. 
Only two parameters need be specified in the calling sequence (XI and Yl ) . 

4.20.8 Subroutines 

SETVAL has no auxiliary subroutines. 

4.20.9 Design Requirements 

SETVAL should reside in the root segment in all links. 

4.20.10 Diagnostic Messages 
None. 



4.20-1 



FUNCTIONAL MODULE GP1 (GEOMETRY PROCESSOR - PHASE 1) 

4.21 FUNCTIONAL MODULE GPl (GEOMETRY PROCESSOR - PHASE 1) 

4.21.1 Entry Point : GPl. 

4.21.2 Purpose 

GPl performs basic geometry processing for the model. A list of all grid and scalar points 
is assembled and placed in internal order. Coordinate system transformation matrices are computed, 
and all grid points are transformed to the basic coordinate system. 

4.21.3 DMAP Calling Sequence 

GPl GE0M1 ,GEOM2/GPL,EQEXIN,6PDT,CSTM,BGPDT,SIL/V,N,LUSET/V,N,N0CSTM/V,N,K!3GPDT $ 

4.21.4 Input Data Blocks 

GEJ8M1 - Grid point, coordinate system, sequence data. 
GE0M2 - Element connection data. 

4.21.5 Output Data Blocks 

GPL - Grid Point List. 

EQEXIN - Equivalence between external grid or scalar numbers and internal numbers. 

GPDT - Grid Point Definition Table. 

CSTM - Coordinate System Transformation Matrices. 

BGPDT - Basic Grid Point Definition Table. 

SIL - Scalar Index List. 

Note: No output data block may be purged. 

4.21.6 Parameters 

LUSET - Output, integer, no default. Total degrees of freedom in the g displacement set. 

N0CSTM - Output, integer, no default. Number of coordinate systems defined in the Bulk Data 
Deck, -1 if no coordinate systems defined. 

N0GPDT - Output, integer, no default. -1 if no grid or scalar ooints defined in Bulk Data 
Deck, +1 otherwise. 



4.21-1 



MODULE FUNCTIONAL DESCRIPTIONS 



4.21.7 Method 



4.21.7.1 Construction of the GPL and First Logical Record of the EQEXIN. 

The SP0INT cards and the scalar element cards (CELASi, CDAMPi. CMASSi, i = 1,2,3,4) are 
read from GE0M2, and a list is made of all referenced scalar points. The GRID cards are read from 
GE0M1, and a merged list of all grid and scalar points is constructed and written on SCRl , a 
scratch file. The list is expanded to pairs of numbers. The first number is the identification 
number, ID, the second is the resequenced number which is given on the SEQGP cards or is 1000*ID 
if not given on SEQGP cards. The paired list is sorted by S0RT on the sequence numbers. The 
resulting set of first numbers is written as the first logical record in the GPL (Grid Point List). 
These are the point identification numbers in order of their sequence numbers. The sequenced 
paired list is written as the second logical record of the GPL data block. The second numbers in 
the sequenced paired list are replaced by the indices 1, 2, 3,..., accordinq to oosition. The 
list is sorted again, this time using the first number of each pair (the identification number). 
The resulting paired list is the first logical record of the EQEXIN data block which is used to 
convert external numbers, given by the first number of a pair, to the internal grid point indices, 
given by the second number in the pair. 

4.21.7.2 Formats of GPDT, BGPDT and CSTM. 

The geometry data blocks are the GPDT, the BGPDT and the CSTM. Their formats, although 
described in section 2.3.3, are repeated here since the following terms will be referenced in the 
discussion below on the construction of the CSTM. 

GPDT - There is one entry for each grid or scala' point. The order of the entries 
is by the internal (sequenced) order. Each entry contains: 

1. Internal sequence number. 

2. Locating coordinate system ID. 

3. x,y,z for a rectangular system. 

4. r,e,z for a cylindrical system. 

5. p,Q,4> for a spherical system. 

6. Global coordinate local coordinate system ID. 

7. Permanent single-point constraint coordinate (1 = x, 2 = y, etc.). 



4.21-2 



FUNCTIONAL MODULE GPl (GEOMETRY PROCESSOR - PHASE 1) 

For scalar points, word 2 = -1 and words 3 through 7 are zero. The data is essentially 
a duplicate of the GRID bulk data card except that the identification number is renlaced by 
the internal sequence number. 

BGPDT - Contains one entry for each grid- or scalar point. The contents are: 

1. Local coordinate system ID for global coordinate definition. 

2. x-"] Locations of point 

3. y • > in basic coordinate 

4. z.) system. 

CSTM - The CSTM contains one entry for each local coordinate system. The order is by 
coordinate system identification numbers. Each entry contains 14 words: 

Word Item 

1 N - the coordinate system ID. 

2 Type^j - the coordinate system type (rectangular, cylindrical or 
spherical) . 

3-5 ^'^nN^ " ^'^^ location of the system origin in basic coordinates. 

6-14 l^^nN-' " *^'^ three-by-three matrix defining the orientation of the 

coordinate system principal axes. 

4.21.7.3 Construction of the GPDT. 

The GPDT data block is formed in core sized groups. The grid and scalar data are read one 
entry at a time from SCRl . EQEXIN (in core) is searched to find the internal number, and the grid 
data are stored (if possible) in the internal position allocated in core. If core will not hold 
the GPDT, the data are written on SCR2, and S0RT is called to sort and write the data on the GPDT. 

4.21.7.4 Construction of the CSTM. 

Sixteen words are alloted for each local coordinate system, and five words are ailoted for 
each referenced grid point. The C^RDij data is read from GE0M1 and stored in core. External 
point ID'S on C0RDij cards are replaced with internal numbers. A C0RD1J card references three 
grid points. It may be converted to a CSTM entry if these grid points have their locations 
reduced to basic coordinates. A C0RD2J card references another local coordinate system. It may 



4.21-3 



MODULE FUNCTIONAL DESCRIPTIONS 

be converted to a CSTM entry if that referenced system has been reduced to a CSTM entry. The 
basic logic is to make repeated passes over the coordinate system data, each time reducinq one or 
more coordinate systems and, when possible, converting referenced grid points to basic system 
location. 

A C0RD1J card image references three grid points - a, b and c. If the locations of these 
points in basic coordinates are the vectors {R^}, {R^}, {R^}, the solution for coordinate system 
N is 



{R0N> = ^Ra> . 



(1) 



{V,} = {R,} - {R^}. 



(2) 



(V,} 



{R^} - {R^} , 



(3) 



{k} 



^V 



u\j } [ (unit "z" vector), 



(4) 



U) 



{k} X {V^} 



(unit "y" vector). 



|{k} X {V^}| 
{i} = {j} X (k) (unit "x" vector). 



(5) 
(6) 



Point a is the origin, point b lies on the z (or polar) axis, point c lies in the x-z plane 
(e = or (fi = 0). The three- by- three matrix [Tj,.] is defined as: 



[T,] = 



il JT 



Ip Jp '^2 



^3 '^3 "^3 



(7) 



N, type^j, {Rqi^} and [T^] form the CSTM entry for the coordinate system. 



4.21-4 



FUNCTIONAL MODULE GP1 (GEOMETRY PROCESSOR - PHASE I] 



A GRID point (j) referenced to coordinate system (N) may be reduced to basic coordinates 
(X , Y , Z ) by the equations: 



1. If type,^ = Rectangular (R), X., Y. and Z. are given by 



oj |Xj 

W = ^"^hmJ + [TJ i\^\ . (8) 

fz. 



o( "ON ^'N-" ) J| 

Z, 



2. If type|y = Cylindrical (C), r, 6 and Z are given by 



Xj = r cos e, (9) 



Yj = r sin 6. (10) 



Zj = z. 01) 



X , Y and Z are calculated as in Equation 8. 

3. If type,^ = Spherical (S), p, 6 and ij> are given by 



-N 

X. = p sin e cos (fi, (12) 

•J 

Y. = p sin e sin (fi, (13) 

Zj = p cos e. (14) 

X , Y and Z are calculated as above. 

When the basic location of a grid point has been calculated, the entry in the list is changed such 
that the reference coordinate system (entry No. 2) is zero and the three values are X , Y , Z . 



4.21-5 



MODULE FUNCTIONAL DESCRIPTIONS 

The C0RD2J card image references another coordinate system and defines three points in the 
referenced system: a, b and c. If system number N is defined by system number M, the solution is 

1. If type^^ = rectangular, the numbers defining the three points are the vectors: 
{a}, {b}, and {c}. 

2. If type^ = cylindrical, the numbers are r, 6 and z. The equations to convert these 
to rectangular vectors are 

iaA [r^ cos 6," 

J k 

^o\ = <>"= sin 9,\ = {a} . (15) 

^3) (^a 

The {b} and {c} vectors are calculated similarly. 

3. If typeu = spherical, the numbers given for the points are p, 9, and ij). We calculate 

^a, "^ I'ap sin 9 cos (}>^ 



Zap sin 



[i^y = <ap sin 9 sin <J>> = {a) (16) 

a, ) [ap cos 9 

and similarly for points b and c. 

4. The definition of the new system is that point a is the origin, point b lies on 
the 2 (or polar) axis and point c lies in the x-z (or 6 = 0) plane. The equations for 
the CSTM data are 

%N> = t^OM> ' C%3 ^^>- (17) 

In system M the vectors defining the axes of system N are 

{V^} = {b} - (a); (18) 

{k} = -mpjr . ("z" unit vector); (19) 



{V.} = {c} - {a}; (20) 



4.21-6 



FUNCTIONAL MODULE GPl (GEOMETRY PROCESSOR - PHASE 1) 



{k} X {V^} 



^JJ = [ { ! <} X {V.y \ ' ^"^" ""^^ vector); 



(21) 



{i} = {j} X {k} . ("X" unit vector), 
The orientation of the axes is defined by the matrix 



(22) 



tTfiN] = [Tqm] 



'ON 



^'l 



^1 



"1 



^3 ^3 "^3 



(23) 



5. On each pass of the C0RDij data at least one new system must be converted. After 
each pass the referenced GRID data is checked and converted. The resulting C0RDij data 
will be the CSTM data block with each entry reduced from 16 to 14 words. 

4.21.7.5 Construction of the BGPDT, the SIL and the Second Logical Record of the EQEXIN. 

The BGPDT and the SIL data blocks are formed simultaneously. The SIL data block is simoly 
a list of the first scalar index for each grid or scalar point. A grid point has six scalar 
indices (or degrees of freedom), and a scalar point has one scalar index. Every degree or freedom 
in the problem has a scalar index, but since the six degrees of freedom for a grid point are con- 
secutive, only the first one is listed. 

The GPDT data are read a point at a time. The basic location coordinates of the point are 
formed using Equation 8 through Equation 14 and these data are written on the BGPDT file. The SIL 
value for the next point is calculated by incrementing the last value by six (grid point) or by 
one (scalar point). 

Finally the second logical record of EQEXIN is written. This record contains pairs of ex- 
ternal numbers, 10*scalar index + type where type = 1 for a grid point, 2 for a scalar point. 

4.21.8 Subroutines 

GPl has no auxiliary subroutines. 



4.21-7 



MODULE FUNCTIONAL DESCRIPTIONS 



4.21.9 Design Requirements 
4.21.9.1 Allocation of Core Storage 

During the assembly of the GPL, space for 2*(number of grid points dIus number of scalar 

points) plus two GIN0 buffers is required. During the assembly of the CSTM, core storage is 

allocated as follows: 

C0MM0N/GPA1/Z(1) 
1 ' 



ICSDT 



ILIST 



BUFl 



External point number 



Internal number 



Coordinate system ID 



1 = rectangular 
Coordinate system type -J2 = cylindrical 

spherical 



lli 



Coordinate system defini 



tion Ig 



= CjJRDlj 
= CS3RD2J 



Reference coordinate system ID 



Two words per entry 
one entry per grid or 
scalar point 



or 



Internal grid number 



Defining coordinate system ID 



Sixteen words per entry 
one entry per coordinate 
system 







GIN0 buffer 



Five words per entry 
one entry for each grid 
point referenced on a 
C0RDl,i card. 



4.21-8 



FUNCTIONAL MODULE GPl (GEOMETRY PROCESSOR - PHASE 1) 

Total storage requirements during this phase, therefore, equals 2*(number of grid + number 
of scalar points) + 16*(number of coordinate systems) + 5*(number of grid points referenced on 
C0RD1J cards) + one GIN0 buffer. 

4.21.9.2 Environment 

Open core for GPl is defined by /GPAl/. The table /GPTAl/ must be in core when GPl is 
executed. GPl uses two scratch files. 

4.21.10 Diagnostic Messages 

The following diagnostic messages may be issued by GPl: 
2001, 2002, 2003, 2004, 2005, 2006, 2012 



4.21-9 



FUNCTIONAL MODULE GP2 (GEOMETRY PROCESSOR - PHASE 2) 

4.22 FUNCTIONAL MODULE GP2 (GEOMETRY PROCESSOR - PHASE 2) 

4.22.1 Entry Point : GP2 

4.22.2 Purpose 

GP2 processes element connection data and converts external point numbers to internal 
numbers . 

4.22.3 DMAP Calling Sequence 
GP2 GE(i)M2,EQEXIN/ECT $ 

4.22.4 Input Data Blocks 

GEI8M2 - Element connection data. 

EQEXIN - Equivalence between external grid or scalar numbers and Internal numbers. 

Note : EQEXIN may not be purged. 

4.22.5 Output Data Blocks 

ECT - Element Connection Table. 
Note : ECT may not be purged. 

4.22.6 Parameters 
None 

4.22.7 Method 

The first data record of EQEXIN (containing pairs of external point identification and 
internal index) is read into core. GE{)M2 is opened, and the header record is skipped. The ECT 
is opened, and the header record is written. The following process is repeated for each logical 
record in GE0M2. 

1. The 3-word header is read. If an end-of-file is encountered, sten (4) is executed. Other- 
wise, /GPTAl/ (see description in section 2.5) is searched for a match. If found, step (2) 
is executed. If not found, an internal table, CARDS, which defines additional cards processed 



4.22-1 



MODULE FUNCTIONAL DESCRIPTIONS 

by GP2 (e.g. GENEL) is searched. If a match is found, step (3) is executed. Otherwise, 
the record is skipped, and step (1) is repeated. 

2. The 3-word header from GE0M2 is written on the ECT. Parameters defining the element are 
fetched from /GPTAl/. If the number of words per element is less than 5, the sort flag in 
the GE0M2 trainer is fetched. Each element card of the current type on GE0M2 is read. 

Each external grid identification is converted to an internal index by performing a binary 
search in the EQEXIN table. If the point is not in the table, an error message is queued 
and the N0G0 flag is turned on. If the data is not to be sorted, the element is written 
directly on the ECT. Otherwise it is saved in core (or written on a scratch file if core is 
full). When all elements of a given type have been processed, the sort flag is again tested. 
If off, the ECT record is closed and return to step (1) is made. Otherwise, the data are 
sorted by S0RT and the ECT record is then written. 

3. For GENEL, SEQBFE and QDSEP data (the latter two are Force Method only), each entry is 
read, all external point identifications are converted to internal indices as in (2) and the 
entry is written on the ECT. When the logical record on GE0M2 is exhausted, the ECT record 
is closed and return to step (1) is made. 

4. The ECT trailer is written, and all files are closed. If the N0G0 flag was turned on, 
PEXIT is called. Otherwise, a normal exit is made. 

4.22.8 Subroutines 



The module GP2 consists of one subroutine, GP2. 
4.22.9 Design Requirements 

4.22.9.1 Allocation of Core Storage 

GP2 requires space for 2*(number of grid points + number of scalar points) + three GIN0 
buffers. 

4.22.9.2 Environment 

Open core is defined by /GPA2/. The table /GPTAl/ must be in core when GP2 is executed. 
GP2 uses up to four scratch files. 



4.22-2 



FUNCTIONAL MODULE GP2 (GEOMETRY PROCESSOR - PHASE 2) 

4.22.10 Diagnostic Messages 

The following diagnostic messages may be issued by GP2: 
2007, 2059, 2060, 2061 



4.22-3 



FUNCTIONAL MODULE PLTSET (PLOT SET DEFINITION PROCESSOR) 

4.23 FUNCTIONAL MODULE PLTSET (PLOT SET DEFINITION PROCESSOR) 

4.23.1 Entry Point : DPLTST 

4.23.2 Purpose 

To generate the structural element sets to be used by the structural plotter 
(functional module PL0T). 

4.23.3 DMAP Calling Sequence 

PLTSET PCDB,EQEXIN,ECT/PLTSETX,PLTPAR.GPSETS,ELSETS/V,N,NGP/V.N.NPSET $ 

4.23.4 Input Data Blocks 

PCDB - Plot Control Data Block for the structure plotter. 

EQEXIN - Equivalence between external grid or scalar numbers and internal numbers. 

ECT - Element Connection Table. 

Note : If PCDB is purged, nothing is done in this module. However, if PCDB is not purged, 
neither EQEXIN nor ECT may be purged. 

4.23.5 Output Data Blocks 

PLTSETX - User error messages related to the definition of element plot sets for the 
structure plotter. 

PLTPAR - Plot parameters and plot control table. 

GPSETS - Grid point sets related to the element plot sets. 

ELSETS - Element plot set connection tables. 

Note: None of these data blocks may be pre-purged unless PCDB is also purged. 

4.23.6 Parameters 

NGP - Output-integer-no default. Total number of grid points. 

NPSET - Output-integer-default value = -1. Number of element plot sets (set to -1 if 
none) . 



4.23-1 



MODULE FUNCTIONAL DESCRIPTIONS 

4.23.7 Method 

Each logical card in the plot control data block (PCDB) is read. If the first entry on a 
card is not "SET", the card is assumed to be a plot parameter or control card meaningful only 
to the PL0T module. In this case, the logical card is copied onto the PLTPAR data block. 

If the first entry on a card is "SET", it is assumed to be a definition of a new element 
plot set. As each entry on the card is read, it is decided whether a list of elements (by type, 
range or explicit id's) or a list of grid points (by range or explicit id) is being included or 
excluded. Each element type which is specified is inserted into a table (TYP, 100 words long). 
If a range of elements or an explicit element id is specified, it is inserted into the beginning 
of open core (the EL array). And finally, if a range of grid points or an explicit grid point id 
is specified, it is inserted into the end of open core (the GP array). When a set has been 
completely specified, it is written out onto a scratch file (MSET) in the following format: 

Word 1 = NEL (number of entries in the EL array). 

Word 2 to NEL+1 = the entries in the EL array. 

Word 1 = NTYP (number of entries in the TYP array). 

Word 2 to NTYP+1 = the entries in the TYP array. 

Word 1 = NPT (number of entries in the GP array). 

Word 2 to NPT+1 = the entries in the GP array. 

After all the SET cards have been processed, subroutine CiJMECT is called to set up a 
shortened element connection table (ECTX). For each element type, the table is as follows: 

Word 1 = two character BCD element type symbol (left justified) 

Word 2 = number of grid points per element. 

for each element ^ Word 3 = element id. 

of this type ( Word 4, = internal grid point numbers of the grid points connected 

etc. 

by this element 



4.23-2 (12-1-69) 



49f 



FUNCTIONAL MODULE PLTSET (PLOT SET DEFINITION PROCESSOR) 

This table, in conjunction with MSET, is used by subroutine CNSTRC to create the 
GPSETS and ELSETS data blocks. The ELSETS data block is simply a duplicate of ECTX for each 
plot set, except that only those elements which are in the set are included. The GPSETS 
data block for each plot set is simply a list of indices into the subset of grid points which 
pertain to this set. 

4.23.8 Subroutines 

Utility routines CLSTAB, FREAD, G0PEN, INTGPX, INT6PT, INTLST, RDMi3DX. RDMJIDE and RDW0RD are 
used by PLTSET. See section 3.4 for their descriptions. 

4.23.8.1 Subroutine Name: SETINP 

1. Entry Point: SETINP 

2. Purpose: To create the plot parameter and control data block (PLTPAR) and interpret 
the plot set definition cards from the Plot Control Data Block (PCDB). 

3. Calling Sequence: CALL SETINP 

C0MM0N/EDES/NTYPES,ENAM{2,5O) - see EDESBD Block Data description below (section 4.23.9.2). 

4.23.8.2 Subroutine Name: C0MECT 

1. Entry Point: CjSMECT 

2. Purpose: To create a shortened form of the Element Connection Table (ECT). 

3. Calling Sequence: CALL C0MECT 
C(3MM0N/EDES/NTYPES,ENAM(2,5O),EC0D(2,5O).EWRD(5O),ENGP(5O) - see EDESBD Block Data description. 

4.23.8.3 Subroutine Name: CNSTRC 

1. Entry Point: CNSTRC 

2. Purpose: To construct the element and grid point plot set data blocks (ELSETS, GPSETS). 

3. Calling Sequence: CALL CNSTRC (GP.ELE.BUF.HAX) 
C0MM0N/EDES/NTYPES - see EDESBD Block Data description, section 4.23.9.2. 



4.23-3 



MODULE FUNCTIONAL DESCRIPTIONS 



Where: 



GP 

ELE 
BUF 
MAX 



NGP locations used to set up the grid point index list for the grid 
point set data block (GPSETS), 

MAX locations used to set up the element set data block (ELSETS). 

Location of 3 GIN0 buffers. 

Amount of core available for the ELE array (open core). 



4.23.9 Design Requirements 

4,23.9.1 Open Core Design (Common Block XXPSET) 



1. Subroutine SETINP 



C(3MM0N/XXPSET/ 



EL(i; 



i 



EL(NEL) 
GP(NPT) 



I 



GP(1) 
XC(1) 



Element id's and ranges 



Grid point id's and ranges 



5 GIN0 buffers 



2. Subroutine CNSTRC 

For this subroutine, open core is partitioned by the calling program as follows: 



GP(1) 

i 

GP(NG) 
ELE(l) 



i 



ELE(MAX) 
BUF(1) 



Grid point index table 



Plot set element id's 



3 GIN!3 buffers 



4.23-4 



FUNCTIONAL MODULE PLTSET (PLOT SET DEFINITION PROCESSOR) 
4.23.9.2 Block Data Interface (EDESBD-Element Description Table) 

C0MM0N /EDES/NTYPES,ENAM(2,5O),EC0D(2,5Q),EWRD(5O),ENGP(5O),ESYM(5O) 
Where: 

NTYPES = number of element types defined in this table. 

ENAM = two word BCD name of the element type. 

EC0D = two word subroutine L0CATE code of the element type for the EC- data block. 

EWRD = number of wordi. per element on the ECT data block. 

ENGP = number of grid point connections per element. 

ESYH = two character BCD element type symbol (left justified) 

Note: The element types defined in this table are the only ones which can be plotted by 
the structural plotter. 

4.23.10 Diagnostic Messages 

A fatal message occurs in SETINP if a set specification is so large that open core is filled 
(i.e., array EL meets array GP). All other diagnostics are non-fatal and are written on the 
PLTSETX data block for printing by the PRTMSG module. These messages are all quite self- 
explanatory and straightforward. 



4.23-5 (12-1-69) 



FUNCTIONAL MODULE PL0T (STRUCTURAL PLOTTER) 

4.24 FUNCTIONAL MODULE PL0T (STRUCTURAL PLOTTER) 

4.24.1 Entry Point : DPL0T 

4.24.2 Purpose. 

To draw structural shapes on a variety of different plotters. 

4.24.3 DMAP Calling Sequence 

PL0T PLTPAR,GPSETS,ELSETS.CASECC,BGPDT,EQEXIN,SIL.PLTDSP1,PLTDSP2/PL0TX/V,N,NGP/ 
V,N,LSIL/V,N,NPSET/V,N,PLTFLG/V,N,PLTNUM $ 

4.24.4 Input Data Blocks 

PLTPAR - Plot parameters and plot control table. 

GPSE'^S - Grid point sets related to the element plot sets. 

ELSETS - Element plot set connection tables. 

CASECC - Case Control Data Table. 

BGPDT - Basic Grid Point Definition Table. 

EQEXIN - Equivalence between external grid or scalar numbers and internal numbers. 

SIL - Scalar Index List. 

PLTDSPl - Translational displacements (statics). 

PLTDSP2 - Translational displacements (dynamics). 

Notes : 

1. Only SIL, PLTDSPl, and PLTDSP2 may be purged. If this is the case, only undeformed 
shapes may be drawn. 

2. If either PLTSDPl or PLTDSP2 is purged, that type of deformed shape will not be 
drawn. 

3. If either PLTDSPl or PLTDSP2 is not purged, SIL may not be purged. 
4.24.5 Output Data Blocks 

PL0TX - User messages. 

ilote: PL0TX may not be purged. 



4.24-1 



MODULE FUNCTIONAL DESCRIPTIONS 

4.24.6 Parameters 

NGP - Integer-input-no default value. Number of grid points. 
LSIL - Integer-input-no default value. Last scalar index value. 
NPSET - Integer-input-no default value. Number of element plot sets. 
PLTFLG - Integer-input/output-default value = 1. Displacement plot flag. 

= 1 if undeformed shapes have not yet been drawn. 

= -1 if undeformed shapes have been drawn. 
PLTNUM - Integer-input/output-default value = 0. Plot number. 

4.24.7 Method 

Subroutine PARAM reads each card in the plot parameter and control table (PLTPAR). If 
the first entry on a card is not 'FIND' or 'PL0T'. it is assumed to be a plot parameter 
card to be processed within PARAM (e.g.. PR0JECTI0N. PLOTTER, etc.). Within PARAM, an implied 
'FIND' card is initially set up to automatically find an origin, vantage point, and scale. In 
addition this same implied "FIND" card is set up each time a new projection is defined as a 
'PL0TTER' card is encountered. At the same time, the view angles are re-initialized to their 
default values, the regions pertaining to each origin are reset to full pictures, and all pre- 
viously defined origins are nullified. 

When a 'FIND' card is encountered, subroutine FIND is called both to interpret the card 
and act upon its requests. And finally, when a 'PL0T' card is encountered, subroutine PL0T 
is called both to interpret the card and to act upon its requests. However, in this case. If 
the implied 'FIND' card set up by subroutine PARAM still exists (i.e., if no origin, scale, 
or vantage point has been defined) the FIND subroutine is called to satisfy these needs before 
subroutine PL0T is called. 

In subroutine FIND, after the interpretation of the 'FIND' card is completed, a coordinate 
system rotation matrix is calculated relative to the current view angles, and then the vantage 
point, scale factors, and the origin requested are calculated as needed. 

In subroutine PL0T, after the interpretation of the 'PL0T' card is completed, a list of 
messages to the plotter operator is generated. Then all plots requested on the plot card are 
generated by calling subroutine DRAW for each plot request. 



4,24-2 



FUNCTIONAL MODULE PL0T (STRUCTURAL PLOTTER) 

Subroutine DRAW generates one plot. It sets up the region of the plot, rotates the grid 
points based upon the current viewing angles, applies the latest scale factor to the structural 
coordinates, and translates these coordinates to the origin specified for this plot. It also 
controls the various aspects of a plot as specified on the 'PL0T' card, e.g., drawing a shape, 
labeling grid points, etc., for both undeformed and deformed structures (superimposition if 
called for). 



4.24-3 (12-1-69) '^ 



MODULE FUNCTIOHAL DESCRIPTIONS 

4.24.8 Subroutines 

The following utility routines are called by PL0T: CLSTAB,FREAD.G0PEN,(INTGPX,INTGPT) , 
INTLST,(RDM0DX,RDM0DY,RDM0DE,RDW0RD). See the subroutine descriptions in section 3. The 
subroutines FNDSET, MINtlAX, PERPEC and PROCES are support subroutines used by more than 
one of the following subroutines. 

4.24.8.1 Subroutine Name: PARAM 

1. Entry Point: PARAM 

2. Purpose: To interpret the plot parameter cards and to detect the 'FIND' and 'PL0T' 
plot control cards. In addition, it serves as a driver for subroutine FIND and PL0T. 

3. Calling Sequence: CALL PARAM (SETID.X) 

C0MM0N/XXPARM/ - See XXPARM table description below (section 4.24.9.2). 
C0MM0N/PLTDAT/ - See PLTDAT miscellaneous table description (section 2.5). 
Where: 

SETID = Various plot set id's created in the PLTSET module. (Record 1 of GPSETS). 

X = Open core. 

4. Method: All plot parameters are inserted in the XXPARM table. Any parameter which 
is not recognizable causes a message to be created to this effect, and the parameter 

is then ignored. 

5. Additional Subroutines Required: FIND,PL0T 

4.24.8.2 Subroutine Name: FIND 

1. Entry Point: FIND 

2. Purpose: To interpret a 'FIND' card and to calculate the parameters requested on 
the card. 

3. Calling Sequence: CALL FIND (M0DE, SETID.X) 

C0MM0N/ XXPARM/ - See XXPARM table description below (section 4.24.9.2). 
C0MM0N/PLTDAT/ - See PLTDAT miscellaneous table description (section 2.5). 
Where: 

M0DE = Current value of the XRCARD mode value as read and modified by subroutine 



4.24-4 



FUNCTIONAL MODULE PL0T (STRUCTURAL PLOTTER) 

RDM0DX. 
SETID = Various plot set id's created in the PLTSET module (record 1 of GPSETS). 
X = Open core. 

4, Method: After interpreting the 'FIND' card, the coordinate system rotation matrix 
is calculated (based upon the current view angles), the vantage point, scale factor, and 
desired origin are calculated. 

5. Additional Subroutines Required: FNDSET.MINMAX,PR0CES,PERPEC. 
4.24.8.3 Subroutine Name: PL0T 

1. Entry Point: PL0T 

2. Purpose: To interpret the 'PL0T' card, and produce all the plots requested on the card 
by acting as a driver to subroutine DRAW. 

3. Calling Sequence: CALL PL0T (M0DE, SETID, X) 

C0MM0N/XXPARM/ - See XXPARM table description below (section 4.24.9.2). 
C0MM0N/PLTDAT/ - See PLTDAT miscellaneous table description (section 2.5). 
Where: 

M0DE = Current value of the XRCARD mode value as read and modified by subroutine 
RDM0DX. 

SETID = Various plot set id's created in the PLTSET module (record 1 of GPSETS). 

X » Open core. 

4. Method: After interpreting the deformed structure plot requests (there may be many 
on one 'PL0T' card), the rest of the 'PL0T' card is read into memory. For each deformed 
structure request, the appropriate displacement data block (PLTDSPl or PLTDSP2) is 
searched for a matching subcase id. If one is found, (this search does not occur if only 
the undeformed requests are being serviced), then the rest of the plot card is interpreted 
for the various plotting options. Subroutine DRAW is then called to service these 
options and to draw the corresponding picture for each plot element set listed on the 
'PL0T' card. 

5. Additional Subroutines Required: HEAD, FNDSET,GETDEF, DRAW. 



4.24-5 



MODULE FUNCTIONAL DESCRIPTIONS 

4.24.8.4 Subroutine Name: GETDEF 

1. Entry Point: GETDEF 

2. Purpose: To read the translational components of a set of displacements (in the basic 
coordinate system). 

3. Calling Sequence: CALL GETDEF (DFRM.GPT.D) 

CjIMMUN/XXPARM/ - See XXPARM table description below (section 4.24.9.2). 

where: 

DFRM = Displacement data block to be read (pre-positioned at the set of displacements 

to be read). 
GPT = List of grid point indices defining a subset of grid points. 
D = Array into which the displacement components are to be read (3 per grid 
point - X.Y.Z). 

4. Method: The scalar index list (STL data block) is used to determine at which grid 
point a particular displacement component is specified. While reading the components, 
a maximum absolute component (HAXDEF) is determined. 

4.24.8.5 Subroutine Name: PLTiSPR 

1. Entry Point: PLT0PR 

2. Purpose: To generate printed output to be used by the plotter operator in setting 
up the plotting equipment, and to generate output informing the user of the plotting 
parameters used to generate the plots. 

3. Calling Sequence: CALL PLT0PR 

CiaMMUN/PLTDAT/ - See PLTDAT miscellaneous table description (section 2.5). 
C0MM0N/XXPARM/ - See XXPARM table description below (section 4.24.9.2). 

4. Method: All output is written on the PL0TX data block for subsequent processing by 
the PRTMSG module. The resulting output can be used by the user to alter certain 

plot parameters on a subsequent run, if he desires, in order to slightly alter the plots 
produced. 



4.24-6 



FUNCTIONAL MODULE PL0T (STRUCTURAL PLOTTER) 

4.24.8.6 Subroutine Name: DRAW 

1. : Entry Point: DRAW 

2. Purpose: To service the many possible plotting options and generate the corresponding 
picture. 

3. Calling Sequence: CALL DRAW (GPLST,X,U,S,DEF0RM,STERE0) 

C0MM0N/PLTDAT/ - See PLTDAT miscellaneous table description (section 2.5). 
C0MM0N/XXPARM/ - See XXPARM table description below (section 4.24.9.2). 
C0MM0N/RSTXXX/ - See RSTXXX table description below (section 4.24.9.2). 
C0MM0N/DRWDAT/ - See DRWDAT table description below (section 4.24.9.2). 
where: 

GPLST = List of indices (one for each structural grid point) into the subset of grid 
points which pertain to the element set appropriate to this plot. 

X = Coordinates of the grid points in this element set (3 per grid point - r,s,t). 

U = Deformation components for each grid point in this element set (3 per grid 
point - x.y.z). 

S = Location into which the s and t deformed structure grid point coordinates are 
to be placed. 

, ... an undeformed structure plot is requested. 
DEF0RM ' 



i= if 
U 1 if 



a deformed structure plot is requested. 

if the left image of a stereo plot is to be generated. 
STEREfJ { 

1 if the right image of a stereo plot is to be generated. 

4. Method: Initially, the grid points are rotated based upon the current viewing angles, 
translated to the selected plot origin, and converted to plotter units using the current 
scale factor, and the deformation components are reduced to the specified maximum deformation 
value. Then the undeformed structural plot is generated. 

Next, the deformed structural shape (if requested) is drawn. Then the deformation vectors 
(as requested) are drawn. 



4.24-7 (12-1-69) 



MODULE FUNCTIONAL DESCRIPTIONS 

5. Additional Subroutines Required: MINMAX.PR0CES.PERPEC.INTVEC.SHAPE.GPTSYM,GPTLBL.DVECTR. 

ELELBL 
4.24.8.7 Subroutine Name: INTVEC 

1. Entry Point: INTVEC 

2. Purpose: To interpret the user supplied deformation vector plot request. 

3. Calling Sequence: CALL INTVEC (VECT0R) 

where: 

VECT0R = BCD characters specified in the deformation vector request (any 

combination of the characters R, X, Y, Z). Input and Output. On input, 
VECT0R is integer (=0) or BCD. On output, VECT0R is integer (=0. if = 
upon input) . 

4. Method: The result is stored into VECT0R, as follows: 



X = 2 
Y = 2 

2 

Z = 2 

R = 2 (if VECT0R = 'R' only, it is treated as if 
VECT0R = RXYZ). 
4.24.8,8 Subroutine Name: SHAPE 

1. Entry Point: SHAPE 

2. Purpose: To draw a structural shape. 

3. Calling Sequence: CALL SHAPE (GPLST,X,U,PEN,DEF0RM) 

where: 

GPLST = List of indices into the subset of grid points pertaining to the shape 

to be drawn. 
X = Corresponding grid point coordinates of the undeformed structure (3 per 

grid point - r, s, t) . 
U = Corresponding grid point coordinates of the deformed structure (2 per grid 

point - s, t) . 

4.24-8 (12-1-69) 



FUNCTIOHAL MODULE PL0T (STRUCTURAL PLOTTER) 

PEN = Pen number or line density to be used to draw the shape. 
if the undeformed shape is to be drawn. 



DEF0RMi 

1 if the deformed shape is to be drawn. 

4. Method: The structural shape to be drawn is defined as a compact element connection 
table on the ELSETS data block (assumed open and positioned at the correct element set). 
As each element is read, it is drawn, taking into account whether the element is one or 
two dimensional . 

4.24.8,9 Subroutine Name: GPTSYM 

1. Entry Point: GPTSYH 

2. Purpose: To type a special symbol at each of a subset of grid points. 

3. Calling Sequence: CALL GPTSYM (GPLST,X,U,SYM,DEF0RM) 

Where: 

GPLST = List of indices defining the subset of grid points. 

X = Corresponding grid point coordinates of the undeformed structure (3 per 

grid point - x,s,t). 
U = Corresponding grid point coordinates of the deformed structure (2 per 

grid point - s,t). 
SYM = Two indices to be used to construct the special symbol. 

if the undeformed grid points are to be used. 



DEF0RM 

= 1 if the deformed grid points are to be used. 

4.24.8.10 Subroutine Name: GPTLBL 

1. Entry Point: GPTLBL 

2. Purpose: To type the external grid point id of each of a subset of grid points. 

3. Calling Sequence: CALL GPTLBL (GPLST, X,U,DEF0RM) 

C0MM0N/PLTDAT/ - See the PLTDAT miscellaneous table description (section 2.5). 

Where: 

GPLST » List of indices defining the subset of grid points. 

X = Corresponding grid point coordinates of the undeformed structure (3 per 



4.24-9 



MODULE FUNCTIONAL DESCRIPTIONS 

grid point - r,s,t). 
U = Corresponding grid point coordinates of the deformed structure (2 per 
grid point - s,t) . 

!0 if the undeformed grid points are to be used. 
= 
1 if the deformed grid points are to be used. 

4. Method: The Internal and external id of each structural grid point is read from the 
EQEXIN data block. If the grid point is part of the specified subset, then the external 
id is printed to the immediate right of the grid point. 

4.24.8.11 Subroutine Name: DVECTR 

1. Entry Point: DVECTR 

2. Purpose: To draw deformation vectors. 

3. Calling Sequence: CALL DVECTR (GPT.X.U.PEN) 
Where: 

GPT = List of indices defining the subset of grid points at which vectors are to 

be drav^n. 
X = Corresponding grid point coordinates of the undeformed structure (3 per 

grid point - x,s,t) . 
U = Corresponding grid point coordinates of the deformed structure (2 per 

grid point - s,t) . 
PEN = Pen number or line density to be used to draw the vectors. 

4.24.8.12 Subroutine Name: FNDSET 

1. Entry Point: FNDSET 

2. Purpose: To find the subset of grid points pertaiiiing to a set of elements, and to read 
the corresponding grid point coordinates from the BGPDT data block. 

3. Calling Sequence: CALL FNDSET (SET, GRID, X) 

Where: 

SET = Element plot set index, 

GRID - Array into which the list of indices defining the subset of grid points 



4.24-10 



FUNCTIONAL MODULE PL0T (STRUCTURAL PLOTTER) 

is to be read. 

X = Array into which the corresponding coordinates are to be read (3 per grid 
point - x,y,z). 

4. Method: If SET = 0, the grid point set index data block (GPSETS) is assumed positioned 
at the correct record. Otherwise, GPSETS is first positioned correctly (record SET+1). 
The indices are then read into GPID, and the corresponding coordinates are read from 
BGPDT into X. 

4.24.8.13 Subroutine Name: MINMAX 

1. Entry Point: MINMAX 

2. Purpose: To initialize the minimum and maximum grid point coordinates to a very 
large and small number, respectively. 

3. Calling Sequence: CALL MINMAX 

C0MMi)N/RSTXXX/ - See the RSTXXX table description below (section 4.24.9.2). 

4.24.8.14 Subroutine Name: PERPEC 

1. Entry Point: PERPEC 

2. Purpose: To calculate the vantage point and/or translate the grid point coordinates 
to the vantage point. 

3. Calling Sequence: CALL PERPEC (X,STERE0) 

C0MM0N/XXPARM/ - See XXPARM table description (section 4.24.9.2). 
C0MM0M/RSTXXX/ - See the RSTXXX table description (section 4.24.9.2). 
where: 

X = = Set of grid point coordinates to be translated (3 per grid point - r,s,t) 
(0 if the coordinates of the left image for stereo are to be calculated. 



jo if 

n if 



STEREO 

the coordinates of the right image for stereo are to be calculated. 

4, Method: After the vantage point is calculated (if required), each grid point is 
translated. In the process, unless the projection is stereo, the minimum and maximum 
s and t coordinates are calculated. Finally, the differences between these minima and 

4.24-11 (12-1-69) 



MODULE FUNCTIONAL DESCRIPTIONS 

maxima, and their averages, are calculated. 

4.24.8.15 Subroutine Name: PR0CES 

1. Entry Point: PR0CES 

2. Purpose: To exchange coordinate axes (as requested) and rotate the grid point coordi- 
nates based upon the current view angles. 

3. Calling Sequence: CALL PR0CES (X) 

COMMSIN/XXPARM/ - See the XXPARM table description below (section 4.24.9.2). 

C0MM|aN/RSTXXX/ - See the RSTXXX table description below (section 4.24.9.2). 
where: 

X = Grid point coordinates (3 per grid point - x,y,z). 

4. Method: In addition to its primary purpose, this subroutine calculates the minimum and 
maximum rotated grid point coordinates, and the differences and averages of these minima and 
maxima. 

4.24.8.16 Subroutine Name: ELELBL 

1. Entry Point: ELELBL 

2. Purpose: To type the element identification number of each element in a subset of 
elements. 

3. Calling Sequence: CALL ELELBL (GPLST,X,U,DEF0RM) 

C0MM0N/CHAR94/ - See the CHAR94 miscellaneous table description (section 2.5). 

C0MM0N/PLTDAT/ - See the PLTDAT miscellaneous table description (section 2.5). 

where: 

GPLST = List of indices defining the set of grid points associated with the elements 
to be labeled. 

X = Corresponding grid point coordinates of the undeformed structure. 

U = Corresponding grid point coordinates of the deformed structure. 



4.24-12 (12-1-69) 



MODULE FUNCTIONAL DESCRIPTIONS 



(0 if the undeformed grid points are to be used 
DEF0RM = < 

(l if the deformed grid points are to be used 



4, Method: The compact element connection table (ELSETS) is read. As each element id is 
read, it is typed at the center of the element. The two character symbolic name of the 
element type is appended to the element id. 



4.24-12a (12-1-69) 



FUNCTIOi-JAL MODULE PL0T (STRUCTURAL PLOTTER) 



4.24.9 Design Reqjiremen ts 



4.24.9.1 Open Core Design (Common Block XXPLj3T) 

Define NPSET = Number of eleiiient plo- sets. 
NGP = Total number of grid po'nts. 
NGPSET = Kumber of grid points in an element. 

1. Subroutine DPL0T partitions open core for subroutine PARAM as foT 

C(3MM0N/XXPL0T/ 
X(0) 



X(NPSET) 



X(BUF) 



Element plot set id's 



Open Core 



3 G:N0 buffers 



2. Subroutine FIND partitions open core for subroutines FNDSET, PERPEC, ard PR3C£S 
fol lows: 



X(0) 



X(NGP) 



X(NGP+3*NGPSET) 



X(NGP+4*NGPSET) 





Gr- 
of 


GPLST(NGP) 
d point indices into 
grid points 


a subset 


Coc 
in 

's' 
the 


X(3, NGPSET) 
)rdi nates of the grid 
the subset 


points 


XR(NGPSET) 
grid point coordinates for 
right image of a stereo pair. 


Rest of open core 



4.24-13 



MODULE FUNCTIONAL DESCRIPTIONS 

3. Subroutine PLiJT partitions open core for subroutines FNDSET, GETDEF, 
and DRAW as follows: 



DEFLST(O) 

DEFLST(NDEF) 
DEFLST(NDEF+N) 

DEFLST(NDEF+N+NGP) 

DEFLST (NDEF+N+NGP+3*NGPSET ) 

DEFLST {NDEF+N+NGP+4*NGPSET ) 

DEFLST(NDEF+N+NGP+7*NGPSET) 

DEFLST(NDEF+N+NGP+9*NGPSET) 
DEFLST(Bl) 



DEFLST(NDEF) 

List of specified deformation 
subcases 



PLTCRD(N) 
Rest of the 'PLj»T' card 



GPLST{NGP) 
Grid point indices into a subset 
of grid points 



X(3,NGPSET) 

Coordinates of the grid points 
in the subset 



XR(NGPSET) 

's' grid point coordinates for 
the right image of a stereo 
pair 



U(3,NGPSET) 

Coordinates of the deformed grid 
points in the subset 



S(2,NGPSET) 

's' and 't' coordinates of the 
deformed grid points 



Rest of open core 



4 GIN0 Buffers 



4.24-14 



FUNCTIONAL MODULE PL0T (STRUCTURAL PLOTTER) 

4.24.9,2 Block Data Interface 

1. C0MM0N/DRWDAT/ SET, LABEL, 0RIGIN, PEN, SHAPE, SYMB0L(2) ,SYM(6) ,VECT0R 

SET - Element plot set index. 

LABEL - Grid point label option. 

0RIGIN - Origin index. 

PEN - Pen number or density value. 

) Integer 
SHAPE - Structural shape drawing option. 

SYMB0L - Grid point symbol indices. 

SYM - Symmetry options. 

VECT0R - Deformation vector options. 

2. C0MM0N/RSTXXX/ CSTM(3,3) ,MIN(3) ,MAX(3) .0(3) .AVER(3] 
CSTM - 3x3 coordinate system rotation matrix. 
MIN - Minimum rotated grid point coordinates. 
MAX - Maximum rotated grid point coordinates. \ Real 
D - Differences between the minima and maxima. 
AVER - Averages of the minima and maxima. 

3. C0MM0N/XXPARM/ PBUFSZ, CAMERA, BFRAMS, PLTMDL(2) .TAPDEN, 

NPENS.PAPSIZ(2) ,PAPTYP(2) .PENSIZ(8) ,PENCLR(8,2) ,"SKIP(1 )" , 
SCALE, 0BJM0D,FSCALE,MAXDEF,DEFMAX, 
AXIS(3),DAXIS(3).VANGLE(3),BETA0S,BETAP."SKIP(4)", 
FVP,R0,S0L,S0R,T0,D0,D02,D03,PRJECT,S0S 
F0RG,0RG,N0RG.0RIGIN(ll),EDGE(n,4),XY(n,3) 

In the following descriptions, the value(s) in parentheses to the right of the variable name, 
the default value, and the letter in parentheses to the right of the explanation 
pertain to the type of the variable (I implies integer and R implies real). 
PBUFSZ(O) = Plot tape buffer size (I) 



4.24-15 (12-1-69) 



MODULE FUNCTIONAL DESCRIPTIONS 



Plotter Data 

CAMERA(2) 
BFRAMS(l) 
PLTMDL (4020,0) 
TAPDEN(O) 

Pen and Paper Data 

NPENS(8) 

PAPSIZ(8,5,11.) 

PAPTYP(VELLUMbb) 

PENSIZ.{1) 

PENCLR. ,(BLAC) & PENCLR. „(Kbbb) 

Scaling Data 

SCALE 

0BJM|}D(1.) 

FSCALE(l) 

MAXDEF(0.) 

DEFMAX 

Viewing Data 

AXIS (1,2,3) 
DAXIS(1,2,3) 

VANGLE(0.,-1.10^°, 34.27) 
BETA(}S(23.17) 

BETAP(0.) 



Plotter camera number (I). 

Number of blank frames between plots (I). 

Plotter model (BCD or I or R). 

Plot tape density (I). 

Maximum number of pens (I). 
Paper size in inches (R). 
Paper type (BCD). 
Pen sizes (I). 
Pen colors (BCD). 



= Object-to-plotter or model-to-plotter 
(stereo only) scale factor (R). 

= Object-to-model scale factor (R-stereo only), 

= Find scale factors option (I). 

= Forced value of the largest deformation 
component (R). 

= Actual largest deformation component (R). 



Undeformed structure axis orientation (I). 

Deformed structure axis orientation (I). 

View angles (R-alpha, beta, gamma). 

Orthographic and stereo default value for the 
"beta" view angle (R). 

Perspective default value for the "beta" view 
angle (R). 



4.24-16 (12-1-69) 



FUNCTIONAL MODULE PL0T (STRUCTURAL PLOTTER) 



Projection Data 

FVP(l) 

RO 

SOL 

SOL.SOR 
TO 
DO 
D02(l.) 

D03(2.) 

PRJECT(I) 

S0S(2.756) 

Origin Data 

F0RG{1) 

|3RG(0) 

N0RG{1O) 

0RIGIN 

EDGE. ,(0.) & EDGE. ,(0.) 

EDGE.^jd.) & EDGE.^^Cl.) 

XY.^^ &XY.^2 
4.24,9.3 Common Storage Requirements 



= Find vantage point option (I). 

= "r" component of the vantage point (R). 

= "s" component of the perspective vantage 
point (R). 

= "s" components of the stereo vantage point (R). 

= "t" component of the vantage point (R). 

= Projection plane separation value (R). 

= Perspective default projection plane separation 
value (R). 

= Stereo default projection plane separation 
value (R). 

= Projection type (I, l=orthographic, 2 = per- 
spective, 3 = stereo). 

= Ocular separation value (R). 

= Find origin point option (I). 

= Number of active origins (I). 

= Maximum number of active origins (I). 

= Active origin id's (I). 

= Lower left corner of the region specified 
for the ith origin (R). 

= Upper right corner of the region specified 
for the ith origin (R). 

= X component of the i origin (R). 

= y component of the i origin (R). 

" left and right x components of the i origin 
for stereo projection (R). 



1. /XXPL0T/ - Open core. 

2. /PLTDAT/ - Plotter data (see miscellaneous table description - section 2.5). 

3. /XXPARM/ - Plotting parameters, 

4. /RSTXXX/ - Plot co-ordinate system calculations. 

5. /DRWDAT/ - Drawing data. 



4,24-17 



MODULE FUNCTIONAL DESCRIPTIONS 

4.24.10 Diagnostic Messages 

A non-fatal message, number 3008, CALL MESAGE (8,x,x), will be generated by subroutine PL0T if 
not enough core is available for the grid point data needed for a specific element plot set. If 
this occurs, this set will not be used to generate a plot. 

All other diagnostics are non-fatal and are written onto the PL0TX message data block 
for printing by the PRTMSG module. These messages are all quite self-explanatory and 
straightforward, and do not have any external message numbers. 



4.24-18 



FUNCTIONAL MODULE GP3 (GEOMETRY PROCESSOR - PHASE 3) 

4.25 FUNCTIONAL MODULE GP3 (GEOMETRY PROCESSOR - PHASE 3) 

4.25.1 Entry Point : GP3 

4.25.2 Purpose 

GP3 processes static loads and temperature data. Static load data are collected by load 
set, and external numbers are converted to internal numbers. Similarly, temperature data are 
collected by temperature set and external numbers are converted to internal numbers. 

4.25.3 omP Calling Sequence 

GP3 GE0M3,EQEXIN,GE0M2/SLT,GPTT/V,N,N0L0AD/V,N,N0GRAV/V.N,N0TEMP $ 

4.25.4 In put Data Blocks 

GEUM3 - Static loads and temperature data. 

EQEXIN - Equivalence between external grid and scalar numbers and internal numbers. 

GE0M2 - Element connection data. 

Note : EQEXIN may not be purged. 

4.25.5 Output Data Blocks 

SLT - Static Loads Table. 

GPTT - Grid Point Temperature Table. 

4.25.6 Parameters 

N0L0AD - Output-integer-no default. -1 if no static loads (i.e. SLT is not created), 
+1 otherwise. 

N0GRAV - Output-integer-no default. -1 if no GRAV cards in the Bulk Data Deck, 
+1 otherwise. 

N0TEMP - Output-integer-no default. -1 if no TEMP or TEMPO cards in Bulk Data Deck 
(or if GPTT is purged), +1 otherwise. 



4.25-1 



MODULE FUNCTIONAL DESCRIPTIONS 



4.25.7 Method 

Subroutine GP3 is the control program for the module. It executes each of the major 
subroutines of GP3 (GP3C, GP3A, GP3B) depending on the status of the data blocks. A flow 
chart for GP3 is included in Figure 1. 

4.25.8 Subroutines 

4.25.8.1 Subroutine Name: GP3 

1. Entry Point: GP3 

2. Purpose: Module control program. 

3. Calling Sequence: CALL GP3 

4.25.8.2 Subroutine: GP3C 

1. Entry Point: GP3C 

2. Purpose: To convert PLt)AD2 data to PL0AD format, merge PL0AD2 data with PLfJAD 
data (if present) and write the resulting data on SCR2, a scratch file. 

3. Calling Sequence: CALL GP3C 

4. Method: PL0AD2 cards are read into core from GE0M3. Six words are used for each 
entry. The first word (set identification) is set negative and the sixth word of 
each entry is set to zero. GE0M2 is opened and the header record is skipped. The 
following steps occur for each record on GE0H2. 

1. The 3-word header is read. /GPTAl/ (see section 2.5) is searched for a match. If 
no match is found, the record is skipped and the process is repeated. If an end-of- 
file is encountered, step (3) is executed. If a match is found, a test on element 
type is made. If a one-dimensional element, the record is skipped and the process 
repeated. Otherwise, step (2) is executed. 

2. An entry of the current element type is read. A linear search through the PLj)AD2 
data in core is made to find a match on element identification (3rd word of each 
PL0AD2 entry). If no match is found, the next entry is read. For each match which 
is found, the grid identification numbers which connect the element are stored 



4.25-2 



FUNCTIONAL MODULE GPS (GEOMETRY PROCESSOR - PHASE 3) 

in the corresponding PL0AD2 entry and the first word of the PL0AD2 entry is set 
positive. When all data for the current element type has been read, a return to 
step (1) is made. 

3. A pass through each entry in the PL0AD2 data is made. For each entry for which 
the first word is negative, an error message is queued and the N0G0 flag turned on. 
Upon completion of the pass, PEXIT is called if the N0G0 flag was turned on. 
Otherwise step (4) is executed. 

4. L0CATE is called to position GE0M2 to PL0AD data. If none exists, step (5) is 
executed. Otherwise, the PL0AD data is read into core following the PL0AD2 data. 
The combined list is sorted by S0RT on set identification number. 

5. The data in core is written as one logical record on SCR2. A return to 6P3 is given. 
Allocation of core storage in GP3C is as follows: 

C0MM0N/GP3C0R/Z{1) 



Before conversion 



After conversion 



NPLD2 



BUFl 



PL0AD2 set ID 



Scale factor 



Element ID 



Same format as 1st 
entry 



GIN0 buffer 



Six words 
per 

PL0AD2 
Icard 



Last 

■ PL0AD2 

entry 



NPLD2 



BUFl 



+ PL0AD2 or PL0AD 


set 


ID 


Seal 


B factor 








Grid 


point ID, 








Grid 


point I Dp 








Grid 


point IDg 








Grid 


point ID. 


or 







; 


Same 


format as 


1st 


entry 


GIN0 buffer 



[Six words 
[per entry 



4.25-3 



MODULE FUNCTIONAL DESCRIPTIONS 

4.25.8.3 Subroutine: GP3A 

1. Entry Point: GP3A 

2. Purpose: To assemble to Static Loads Table (SLT). 

3. Calling Sequence: CALL GP3A 

4. Method: GP3A assembles the SLT by making two passes on the load cards (F0RCEi, M0MENTi, 
etc). On the first pass each of the cards is read from GE0M3, (or SCR2 for PL0AD 
data), unique set identifications are extracted and saved in core, all external 

point identifcations are converted to internal indices by performing a binary search 
in the EQEXIN table, the data are written on SCRl , and pointer tables are accumulated. 
These tables are as follows: 



STATUS 



Pointer in LIST table to first entry of card type 



NTYPES 




2 words/entry 



1 entry per 
card type 



Last Entry 



Note: entry = (-1, -1) if card type not present 



4.25-4 



FUNCTIONAL MODULE GPS (GEOMETRY PROCESSOR - PHASE 3) 





C|3MM0N/GP3C0R/Z(1) 


1 


External point ID 




Internal index 


NEQX 


I 


ILIST 


Load set ID 




Pointer to data in set 




No. of data words in set 




; 


NLIST 






• 




Set IDg 


ISET 


Set ID, 


BUF2 


GIN0 buffer 


BUFl 


GIN0 buffer 



2 words/entry 



3 words/entry 



Last entry 
in table 



|. 1 word/entry 



EQEXIN Table 
(1 entry per 
point in model) 



LIST Table 

(1 entry per set 

per card type) 



Set LIST 

(1 entry per set 

per card type) 



Note: 



Set IDs are stored backward in core. ISET points to first entry, 
ISET-1 to record entry, etc. 



4.25-5 



MODULE FUNCTIONAL DESCRIPTIONS 



At the end of the first pass, the LIST table is moved to the beginning of open core. 

The set list is sorted, and duplicate set identifications are discarded. The resulting 

list is stored immediately following the LIST table. If all data for the load cards 

will fit in the remaining core, this data is read from SCRl . Core storage is as 

follows: 

C0MM0tVGP3C0R/Z(l) 



ILIST=1 



NLIST 
ISET 



ITABL=NSET 



BUFl 



Set ID 


Pointer to data in 


set 


No. of data 


words 


in set 






Set ID, 


; 


Set ID^ 


Load data 


GIN0 buffer 



>3 words/entry 



)LIST Table 



Last entry 
U word/entry 

Last entry 



Set LIST 



4.25-6 



FUNCTIONAL MODULE GP3 (GEOMETRY PROCESSOR - PHASE 3) 

The SET list is written in the header record on the SLT. For each set ID in the 
SET list, the LIST table is searched for a match. When found, the pointer 
to the data is fetched. The data are sorted on the applied point (except GRAV and 
PL0AD data) and the data written on the SLT. As a result, each logical record of 
the SLT contains all data for one set. Finally, if combination load cards are 
present, they are copied from GE0M3 to the last record of the SLT. 

If core will not hold the entire load data, the logic is similar to above except 
that SCRl is passed once for each set and only data belonging to a single card 
type within a set are read into core. 

4.25.8.4 Subroutine Name: GP3B 

1. Entry Point: GP3B 

2. Purpose: To assemble the Grid Point Temperature Table (GPTT). 

3. Calling Sequence: CALL GP3B 

4. Method: EQEXIN is read into core. A list of default temperatures (TEMPO cards 
if present) is read from GE0M3. The temperature data (TEMP cards) are read to 
determine the number of temperature sets, the set identifications and the number 
of entries in each temperature set. For each temperature set, a three-word entry 
is written in the header record of the GPTT: 

Word 1 = Set ID 

Word 2 = default temperature (real) or -1 (integer) 

Word 3 = record number in GPTT of temperature data for the set or zero if only 
default temperature is defined. 

GE0M3 is backspaced one logical record. The temperature data are re-read. Each 
point identification is converted to an internal index by performing a binary search 
in the EQEXIN table. When all temperature data for a set have been read into core, 
the data are sorted on internal index and written as one logical record on the GPTT. 
This process is repeated for each temperature set. 

Allocation of core storage for GP3C is as follows: 



4.25-7 



MODULE FUNCTIONAL DESCRIPTIONS 



C0MM0N/GP3C0R/Z(1) 



ITEMPD 



External point ID 



Internal index 



Temperature Set ID 



Default Temperature 



2 words/entry 



2 words/entry 



ITABL+1 



Nl 



Number of data words in set 1 



Point ID 



Temperature 



BUF2 
BUFl 



GIN0 buffer 



GINi3 buffer 



'■ 1 word/entry 



2 words/entry 



EQEXIN Table 
(1 entry per 
point in model) 

Default temperature 
1 entry per set 

Definition of data 
in temperature sets 

Temperature data 
for one set 



4.25-8 



FUNCTIONAL MODULE GP3 (GEOMETRY PROCESSOR - PHASE 3) 

4.25.9 Design Requirements 

4.25.9.1 Allocation of Core Storage 

The core storage maps presented in the method sections of GP3A, GP3B and GP3C provide 
detailed storage requirements. A summary is presented here. 

GP3C: Maximum requirement = 6* (number of PL0AD2 + number of PL0AD cards) + one 
GIN0 buffer. 

GP3A: Let NPTS = number of grid + number of scalar points and NSETS = (number of load 
sets) * (number of card types per load set) and SYSBUF = one 6IN0 buffer. 

Then maximum storage requirement equals MAX ( (2*NPTS+4*NSETS+2*SYSBUF) , (4*NSETS + MAX 
(number of words for one set of one card type) + SYSBUF)). 

6P3B: See storage map. 

4.25.9.2 Environment 

1. Block Data 

The block data program GP3BD initializes /GP3C0M/ with GIN0 file names, data defining 
the load cards and other miscellaneous data. It must be resident in core when GP3 is 
executed. 

2. General 

/GPTAl/ is used by GP3C and must be core resident when GP3 is executed. Open core is 
defined by /GP3C0R/. The normal overlay is to include GP3BD, GP3, GP3C, GP3A, GP3B in 
one segment. GP3 uses two scratch files. 

4.25.10 Diagnostic Messages 

The following messages may be issued by &P3: 

2008. 2009, 2015. 3008. See section 6 of the User's Manual for details. 



4.25-9 



HODULE FUNCTIONAL DESCRIPTIONS 



GP3 



ENTER 



— ^ [Read Trail 



Read Trailer 
.'-on SLT 




Figure 1. Flowchart for module GP3 



4.25-10 



FUNCTIONAL MODULE TAl (TABLE ASSEMBLER) 

4.26 FUNCTIONAL MODULE TAl (TABLE ASSEMBLER) 

4.26.1 Entry Point : TAl 

4.26.2 Purpose 

TAl processes element connection data, element property data and geometry. These data are 
merged in two different sorts for efficiency in later processing. The Element Summary Table 
contains, for each element, connection, property and geometry data. The Element Connection 
and Properties Table contains, for each grid or scalar point in the model, connection, property 
and geometry data for all elements connected to the point. Element temperature data are also 
included for both data blocks where applicable. Additionally, general elements are processed 
and the GEI (General Element Input) data block is assembled. 

4.26.3 Df^P Calling Sequence 

TAl, ECT,EPT,BGPDT,SIL,GPTT,CSTM/EST,GEI,ECPT,GPCT/V,N.LUSET/V,N,NSIL/V,N,N0SIMP 
/C,N,O/V,N,N0GENL/V,N,GENEL $ 

4.26.4 Input Data Blocks 

ECT - Element Connection Table. 

EPT - Element Properties Table. 

B6PDT - Basic Grid Point Definition Table. 

SIL - Scalar Index List. 

GPTT - Grid Point Temperature Table. 

CSTM - Coordinate System Transformation Matrices. 

Note : The ECT, BGPDT and SIL data blocks may not be purged. 

4.26.5 Output Data Blocks 

EST - Element Summary Table. 

GEI - General Element Input. 

ECPT - Element Connection and Properties Table. 

GPCT - Grid Point Connection Table. 

Note : No output data block may be purged. 



4.26-1 



MODULE FUNCTIONAL DESCRIPTIONS 

4.26.5 Parameters 

LUSET - Input-integer-no default. Degrees of freedom in the g-displacement set. 

NSIL - Output-integer-no default. Number of grid points plus number of scalar points 

in the model . 
N0SIMP - Output-integer-no default. Number of elements in the model (exclusive of 

general elements) or -1 if no elements. 
N0GENL - Output-integer-no default. Number of general elements in the model or -1 

if no general elements. 
GENEL - Output-integer-no default. GENEL = -N0GENL. 

4.26.7 Method 

4.26.7.1 General Comments 

The purpose of the Table Assembler Module is to combine all of the element data in a 
convenient form for the generation of the structural matrices (ECPT) and for the calculation of the 
element stresses and forces (EST). The complete description of an element requires: (1) the 
locations of the connected grid points, (2) necessary orientation data and end conditions, 
(3) element properties, (4) a material reference, (5) transformations from the basic system 
to the global coordinate system and (6) element temperature. Scalar elements require no 
geometric or material data. General elements may require geometric data. 

Four data blocks are formed in this module, "me ECPT data block is used in structural 
matrix generation. It contains all element data for each grid point or scalar point in the 
order of the sequenced grid point numbers (internal grid point indices). The EST data block 
contains element data in groups of element type and with sequential element I.D. numbers 
within each group. It is used to calculate element stresses and forces in a convenient order 
for output. The GEI data block contains the general element flexibility and support matrices. 
The GPCT data block is used to allocate storage in the structural matrix assemblers. 

The reason for assembling the ECPT and EST tables rather than generating functions such 
as element stiffness matrices and stress functions is the expected size of the problems. The 
computing time used to recalculate certain data is expected to be compensated for by the time 
savings that result from sorting and merging smaller tables. 



4.26-2 



FUNCTIONAL MODULE TAl (TABLE ASSEMBLER) 

Subroutine TAl is the main control program for the module. It executes each of the 
major routines of the Table Assembler (TAIA to assemble the EST, TAlB to assemble the ECPT 
and GPCT, and TAIC to assemble the GEI) depending on the status of the data blocks and data 
for the problem. A flow chart of TAl is included as Figure 1. 

4.26.7.2 TATA 

Assembly of the Element Summary Table is performed in two steps. For the first step, 
the EPT is read into core one property type at a time. The ECT is read one element at a time. 
For each element the referenced property data are found by performing a binary search in the 
EPT in core. The ECT and EPT data are written on SCRl , a scratch file, one element at a time, 
one logical record per element type. 

To initiate the second step, the BGPDT and SIL data blocks are read into core. If a 
temperature set is selected, the appropriate temperature data from the GPTT are read into core. 
Data from SCRl are read one element at a time. Internal indices for the grid points are used 
as pointers into the BGPDT and SIL tables. The temperature of the element is computed by 
averaging the temperatures of the referenced grid points. Each temperature is found by 
performing a binary search in the GPTT with the interna.! index of the grid point. If the entry 
is not found in the GPTT, the default temperature for the set is substituted. The internal 
indices are now replaced witn corresponding scalar index values. A line comprising ECT, EPT, 
BGPDT and GPTT data for the element is written on the EST. Each logical record of the EST 
comprises all data of one element type. 



4.26-3 



MODULE FUNCTIONAL DESCRIPTIONS 



Allocation of core storage during the second step is as follows: 

C0MM0N/TAA1/Z(1) 
L?ICBGP=1 " 



NBGP 
NBGP+1 



ITMP 



BUF2 
BUFl 



Coordinate system ID 



SIL, 



SIL, 



Internal index 



Temperature 



GIM0 buffer 



GIN0 buffer 



4 words/entry 



} 1 word/entry 



2 words/entry 



BGPDT table 

one entry per point 

in problem 



SIL table 

one entry ner noint 

in oroblem 

GPTT table 
one entry per 
defined point 



4.26.7.3 TAIB 

The ECPT data block is assembled in TAIB. Each logical record m the ECPT corresponds to a 
grid or scalar point in the model. For each point, the data for each element connected to the 
point are listed. The data for each elen^nt are identical to the EST data. Each set of element 
data will be listed in the ECPT "n" times, where "n" is the number of grid points connected by the 
element. A sample of the ECPT is given in Table 1. The logical phases of the operation are as 
follows: 

A list is formed in core giving the relative locations of the elements in the ECT data 
in the order which they will be placed in the ECPT data block. Storage is allocated by 



4.26-4 



FUNCTIONAL MODULE TAl (TABLE ASSEMBLER) 

forming the GPC (Grid Point Counter) and then replacing the GPC by a running sum of 

elements connected to points. A sample is: 

Irr.pl ied GPC GPCS 

Grid Point Number of Sum of Previous 

internal index Connected Elements Elements 

(1) 5 

(2) 3 5 

(3) 1 8 

(4) 2 9 

(5) 6 11 

17 



The GPC is formed as follows. An area of core equal to the number of grid and scalar 
points of the model is set to zero. The ECT is read one element at a time. The storage 
location corresponding to the internal index of each referenced grid point is incremented by 
one. When each element in the ECT has been processed, a running sum of the core table is 
formed. 

The contents of each word in the GPC now provide a pointer to the first storage location 
where a second pointer to the element data will be stored. Since the total number of connected 
elements may exceed available core storage, spill logic is provided. A band of entries in the 
GPC is determined. The ECT is read one element at a time. The position of each element of 
a given element type is determined by summing the number of words for each entry for the 
element (i.e. if m = number of words per ECT entry, then the position of the element in the 
ECT record = (i-l)*m where i = entry number in the ECT record). For each point referenced by 
the element (which is in the band currently being processed), the contents of the associated 
position in the GPC is fetched. The element position and its type are stored at the indicated 
locations. 

The location in the GPC is incremented by one. When a pass of the ECT is complete, the 
skeleton ECPT is written, one logical record per point in the band of the current pass. Each 



4.26-5 



MODULE FUNCTIONAL DESCRIPTIONS 



logical record consists of pairs of {-1, element pointer). The number of pairs equals the 
number of elements connected to the point. Example: 

C0MM0N/TAA2/Z(1) 



lECPTO 



code for element 
type (1 = BAR) 



1 



r 



y_l 



15 



36 



80 



16 



GPC 



Storage for the 
3 element pointers 
connected to grid point 1 

Storage for the 
2 element pointers 
connected to grid point 2 



position of element in ECT record 



Skeleton ECPT data is written on a scratch file: 



-1 


1 1 

1 







-1 


15 1 
1 




36 


-1 


3 1 

1 




80 


-1 


1 1 

1 




16 


-1 


1 I 
1 









• 





Logical record 1 

(all elements connected 

to grid point 1 ) 



Logical record 2 

(data for grid point 2) 



4,26-6 



FUNCTIONAL MODULE TAl (TABLE ASSEMBLER) 

When all entries of the 6PC have been processed, the skeleton ECPT is complete. 
An area of core equal to two words per element type is set to zen.-. The ECT is read into core 
following the above table until either the ECT is exhausted or core is filled. A pointer to 
the beginning of data for each element type is stored in the table. The skeleton ECPT is 
now read one pair of words at a time. If the data to which the element pointer points are 
currently in core, they are written out on a second scratch file. The first word of the entry 
contains the number of words in the ECT data. If the data are not in core, the pair (-1, 
element pointer) is written on the second scratch file. This process is repeated until the 
skeleton has been exhausted. If all the ECT is in core, the new skeleton ECPT is complete. 
Otherwise, the files for old and new skeleton ECPT are switched, and the process continues by 
reading more of the ECT data into core. Storage allocation at this point follows: 



C0MM0N/TAA2/Z(ll 



N21 



Pointer to ECT data for 1st element type 



Sum of ECT words read on previous passes 



ECT data for 1st element type 



ECT data for 2nd element type 



2 words/entry jone entry 
per 

element 
type 



4.26-7 



MODULE FUNCTIONAL DESCRIPTIONS 

The remainder of the ECPT assembly is very similar to the EST construction. The 
principal difference is that the entire EPT is held in core. A pointer table similar to the 
ECT table is formed (two entries per element type). The EPT is read into core, and the first 
position of each EPT type is stored in the table along with the number of EPT entries of that 
type. If the BGPDT, SIL and GPTT can be held in core with the EPT, the ECPT is assembled 
in one pass. Otherwise, two passes are made. The skeleton ECPT is read one entry at a time. 
For each element, the property data are attached by performing a binary search in the associated 
property table in core. If one pass, the BGPDT, SIL and GPTT data are attached as in TAIA. 
Otherise the ECT and EPT data are written on a scratch file, and a second pass is made to attach 
the BGPDT, SIL and GPTT data. Table 1 contains sample ECPT contents. 

During the final pass of the ECPT assembly, the 6PCT is constructed. The GPCT is 
comprised of one logical record per point (same as ECPT). Each logical record consists of the 
pivot point and all other points connected to the pivot by means of element connections. 



4.26-8 



FUNCTIONAL MODULE TAl (TABLE ASSEMBLER) 



Table 1, Sample ECPT Data Contents. 



Reference Grid Point First Scalar Index 
(Pivot Point) 



235 



1st Element Type 



9 (Triangular membrane) 



Connected Grid Point First Scalar Indices 
(From ECT and SIL) 

Anisotropic Angle (From ECT) 
Material Number (From EPT) 



625 
235 
535 

0.0 



1st Element Properties (From EPT) 



0.5 
0.0 
1.0 



Location and Orientation Data for Grid 

Points 

(From BGPDT) 

Element Temperature (From GPTT) 



5, 10.0, 100,0, 0.0 
5, 11.0, 100.0, 0.0 
0, 235.0. 50.0, 25.0 

15.5 



2nd Element Type 



34 (Bar) 



etc. 



Last Element Type (for point 235) 



1 (Rod) 



End of Logical Record (new grid point) 

Reference Grid Point First Scalar Index 
(Pivot Point) 



etc. 



etc. 



241 



4.26-9 



MODULE FUNCTIONAL DESCRIPTIONS 

4.26.7.3 TAIC 

The General Element flexibility and support matrices are assembled in TAlC. The data, 
given in the ECT data block, consist of the following sections for each General Element: 

1. A list of the independent degrees of freedom, u-, in terms of grid points and 
components and/or scalar points. 

2. A list of supporting degrees of freedom, u ,, given by grid and scalar points 
(May be null ) . 

3. A flexibility matrix [Z] with rows and columns corresponding to the list of given 
u. points. 

4. A support matrix [S] with rovs corresponding to the u. points and columns 
corresponding to the u. points. (May be null). 

The tasks of TAIC are to (1) convert the lists of u. and u, to scalar indices and sort 
them by increasing scalar index, (2) rearrange the matrices to correspond to the sorted lists 
of u^ and u^ degrees of freedom, and (3) on user option calculate the support matrix from grid 
point geometry. 

These tasks are accomplished as follows: 

1. For each set of coordinates (u. and u,) of length n, a 4xn table is formed where 
the four entries corresponding to each degree of freedom are: 

a) The position as given (1, 2, 3 ...n) 

b) The internal position (zero initially) 

c) The grid or scalar point I.D. (Internal index) 

d) The grid point component (1 = x, 2 = y, etc) 

2. The list is sorted on the third and fourth position. If a point I.D. in the third 
position is duplicated, the duplicates are sorted on the components in the fourth 
position. The list now corresponds to the desired order of increasing scalar indices, 

3. The SIL data block is read, and each of the points in the list is converted to its 
SIL value. (The position of a SIL number is its internal point index.) The SIL 
value and the component c. determine the scalar index, N., of a degree of freedom by: 



4.26-10 



FUNCTIONAL MODULE TmI (TABLE ASSEMBLER) 

N. = SIL + (c. - 1) (1) 



for grid points and 

N. = SIL (2) 

for scalar points. 

The list of scalar indices is written on the GEI data block file. 

4. In order to rearrange the matrices to correspond to the proper sequence of degrees 
of freedom the above list is modified as follows: 

a) The internal position number is placed in the second position of each entry in 
the list. The first entry uses 1, the second, 2, etc. 

b) The list is sorted again to return the original order as given on the input card 
images. The first position of each entry supplies this order. The internal 
position of a term in a matrix is now given by the second numbers in each entry. 

5. Steps (1) through (4) are repeated for both the u. and u, sets. 

6. The [Z] and [S] matrices are rearranged according to the sorted lists of degrees 
of freedom. The row and column numbers are converted by the algorithm: 

a) For a term of 1.., where i and j are the row and column as given by the matrix 

' J 

order, the position i of the u. irternal number list gives i., the new 
column number. 

b) For a term of S. ., where i and j are the external row and column numbers, the 
row number i is converted using the u. list. The column number j uses the 

u, list. 

If a matrix is small enough to fit in core, the new row and column numbers 
are used to place the term in its correct position in core. If the matrix 
will be larger than core, the new row and column indices and the term itself 
are written on a scratch file. When all terms are processed, the file is 
sorted to form a sequenced matrix. The terms of the matrix are written on 
the GEI file in full matrix form. 



4.26-11 



MODULE FUNCTIONAL DESCRIPTIONS 

4.26.7.4 TAICA 

The [S] matrix must be generated if the user inputs a list of six u, points and does 
not supply an [S] matrix. This is accomplished in subroutine TAICA as follows: 

The BGPDT and CSTM data are read into core. (SIL is already in core). 

A six by six matrix [d ] is formed, where each row corresponds to a u. scalar index (j). 

[D ] is a six by six matrix which transforms the three translations and three rotations 

in the basic coordinate system to the six rigid body u. degrees of freedom: 



\\i\ - I' 



(3) 



xo 

^zo 



basic 



The steps for generation of each row of [D] are as follows: 

1. X.| Y,, Z. the BGPDT location vector for the grid point containing scalar point j is 
found. 

2. [T.] the 3x3 global-to-basic transformation matrix for the grid point containing j 

J 

is fetched using subroutine MAT. 

3. If scalar j is a translation, define: 



N 



1 











h 


-^ 





1 





-^j 





h 








1 


h 


-^j 






(4) 



The column of [T.] corresponding to the degree of freedom j is defined as the 

J 

row vector { V. } ^. The row vector of [D ] corresponding to point j is: 



4.26-12 



FUNCTIONAL MODULE TAl (TABLE ASSEMBLER) 

(D,.}^ = ^V.f [E.]. (5) 

4. If scalar j is a rotation, the column of [T.] corresponding to the degree of 

J 

freedom j is defined as the row vector {V.} . The row vector of [D ] corresponding to 
point j is: 

When all 6 rows [D^] have been generated, the matrix is inverted: 

tHdoJ = CDo^"^ (7) 

[Hjjj] transforms the u^ displacements to rigid body motions about the basic 
coordinate system, i.e.: 

^ ^0 



h 



xo 



tHdo^ ^"d> (8) 



yo 
^zo /basic 

If the matrix is ill-conditioned, a fatal error exists. 

The [S] matrix may now be calculated a row at a time. The list of u. points, (s.). is 
read one at a time, and the [S] matrix is formed a row at a time. Call each row {S.}^. 

The steps for generation of each row are as follows: 

1. Using the basic coordinates X., Y^ , Z^ for the grid point corresponding to scalar s., 
the global-to-basic transformation matrix [T. ] is fetched. 

2. The column of [T.] corresponding to the scalar coordinate of u. is defined as the row 
vector {V.} . 



4.26-13 



MODULE FUNCTIONAL DESCRIPTIONS 



3. If u. is a translation, we form 



[E] 



1 



■^i 



(9) 



and 



(s^}-^= {v^}T[e] [hJ 



(10) 



4. If u. is a rotation: 



{S^}"^ = |0 0: \l]\ [hJ 



(ii; 



4.26.8 Subroutines 

4.26.8.1 Subroutine Name: TAl 

1. Entry Point: TAl 

2. Purpose: Module driver. 

3. Calling Sequence: CALL TAl 

4.26.8.2 Subroutine Name: TAIA 

1. Entry Point: TAIA 

2. Purpose: To assemble the EST. 

3. Calling Sequence: CALL TAIA 

4.26.8.3 Subroutine Name: TAIB 

1. Entry Point: TAIB 

2. Purpose: To assemble the ECPT and GPCT. 

3. Calling Sequence: CALL TAIB 

4.26.8.4 Subroutine Name: TAIC 
1. Entry Point: TAIC 



4.26-14 



FUNCTIONAL MODULE TAT (TABLE ASSEMBLER) 

2, Purpose: To assemble the 6EI. 

3. Calling Sequence: CALL TAIC 

4.26.8.5 Subroutine Name: TAICA 

1. Entry Point: TAICA 

2. Purpose: To calculate the general element support matrix [S] . 

3. Calling Sequence: CALL TAICA 

4.26.8.6 Subroutine Name: TAIF 

1. Entry Point: TAIF 

2. Purpose: To assemble the super quadrilateral portion of the SEST 
(Force Method only) . 

3. Calling Sequence: CALL TAIF 

4.26.8.7 Subroutine Name: TAIG 

1. Entry Point: TAIG 

2. Purpose: To assemble the final EST (Force Method only). 

3. Calling Sequence: CALL TAIG 

4.26.9 Design Requirements 

4.26.9.1 Allocation of Core Storage 

TAIA. Step (1): Maximum core storage equals all property data for one element type 
plus three GINj) buffers. 

Step (2): Maximum core storage equals 5* (number of grid and scalar points in 
model) plus 2* (number of grid point temperatures in selected set) plus two 
GIN0 buffers. 

TAIB. The initial steps of TAIB are open ended. The final assembly of the ECPT requires 
that all EPT data be held in core at one time. At another time the same storage 
requirement as TAIA exists plus additional storage to hold a list of the maximum 
number of points connected to any one point by means of element connections. 

4.26-15 



MODULE FUNCTIONAL DESCRIPTIONS 

TAIC. The maximum storage requirement equals 5* (number of grid and scalar points 

in the model) plus the CSTM table plus 4* (number of u. + number of u. points) 
plus three GIN0 buffers. 

4.26.9.2 Environment 

TAl is designed to allow each of the major phases of the module to be in a separate 
overlay segment. Open core for each is defined as follows: 



TAl A: 


/TAAl/ 


TAIB: 


/TAA2/ 


TAIC: 


/TACl/ 



GIN0 file names and DMAP parameters are communicated through blank C0MM0N. No block 
data program is used. Communication between TAIC and TAICA occurs through /TAICAX/ and /TACl/. 

4.26.10 Diagnostic Messages 

The following messages may be issued by TAl: 

2010, 2011, 2013, 2014, 2015, 2044, 2045, 2063, 2082 



4.26-16 



FUNCTIONAL MODULE TAl (TABLE ASSEMBLER) 



TAl 



c 



ENTER 



3 



Initialize 

GIN0 File 

Names 



RDTRL 



Read Trailer 
on GCPT 



Set Flag 

for 
Approach 



RDTRL 



Read Trailer 
on ECT 



Set flag 

for general 

elements 



Displacement 




Force 



Assemble 
EST 



Assemble 
ECPT.GPCT 



laff 



Assemble 
GEI 



Set Flag 

for Each 

Super 

Element 

Type 




Present 




Assemble 
EST 



Assemble 
GEI 



Figure 1(a). Flowchart for module TAl 



4.26-17 



MODULE FUNCTIONAL DESCRIPTIONS 




[Assemble 1 
, '[initial ESTj 



J" Assemble] 
'lECPT J 



fAssemble ] 

iPortion of SEStJ 



Absent 



Present fAssemble 

IPortion of SEST 




Figure 1(b). Flowchart for module TAl 



4.26-18 



FUNCTIONAL MODULE SHAl (STRUCTURAL MATRIX ASSEMBLER - PHASE 1) 

4.27 FUNCTIONAL MODULE SMAl (STRUCTURAL MATRIX ASSEMBLER - PHASE 1) 

4.27.1 Entry Point : SMAl 

4.27.2 Purpose 

To generate the stiffness matrix exclusive of general elements, [K^n^' ^^^ structural 
damping matrix, [K^J, and the Grid Point Singularity Table, GPST. 

4.27.3 DMAP Calling Sequence 

SMAl CSTM,MPT,ECPT,GPCT.DIT/KGGX,K4GG,GPST/V,N,N0GENEL/V,N,N0K4GG $ 

4.27.4 Input Data Blocks 

CSTM - Coordinate System Transformation Matrices. 

MPT - Material Properties Table. 

ECPT - Element Connection and Properties Table. 

GPCT - Grid Point Connection Table. 

DIT - Direct Input Tables. 

Notes : 1. The CSTM may be purged. 

2. The ECPT and the GPCT cannot be purged, or else a fatal error will occur, 

3. If some element references a material property, the MPT cannot be purged. 

4. If some material property is temperature dependent, DIT cannot be purged. 

4.27.5 Output Data Blocks 

K6GX - Partition of stiffness matrix exclusive of general elements - g set. 
K4GG - Partition of structural damping matrix - g set. 
GPST - Grid Point Singularity Table. 

Notes : 1. Neither KGGX or GPST may be pre-purged. 

2. If K4GG is pre-purged, K4GG will not be generated. 

3. If N0GENL > (see below) the GPST will not be generated. 

4.27.6 Parameters 



N0GENL - Input- integer-no default value. N0GENL is the number of general 



4.27-1 



MODULE FUNCTIONAL DESCRIPTIONS 

elements in the model. If N0GEML >0 then GPST will not be generated. 

N0K4G6 - Output-integer-no default value. If K4GG has been pre-purged or is the 
zero matrix, N0K4GG is set equal to -1. Otherwise N0K4GG is set = +1. 

4.27.7 Method 

Matrix generation modules such as SMAl , SMA2, DSMGl and PLA4 all use the ECPT(or a 
variation thereof in the case of PLA4) and its companion data block, the GPCT, as the basic 
data blocks for generation of stiffness and structural damping matrices (SMAl), mass and 
viscous damping matrices (SMA2), the differential stiffness matrix (DSMGl), and the non- 
linear stiffness matrix (PLA4). The central role of the ECPT data block in these modules 
Is discussed in section 1.8. 

Subroutine SMAl is the module driver. Its tasks are: to set up GINf) buffers and matrix 
control blocks for the output matrices; to determine if the CSTM data block exists, and, 
if It does, to read it into open core and call the initialization routine PRETRD; to call 
the material properties initialization routine PREMAT, where material property cards and 
tables are read into open core; to open and position all files so that input data blocks 
are ready to be read and output data blocks are ready to be written; to call subroutine SMAIA, 
the module "workhorse", which will create the output data blocks. Upon return from SMAIA, 
files are closed and trailers are written. Subroutine descriptions for PRETRD and PREMAT 
can be found in section 3.4.37 and 3.4.36 respectively. 

Subroutine SMAIA consists entirely of a loop in which, during each pass of the loop, a 
record of the GPCT and a record of the ECPT are processed In a complementary manner. Each 
pass through this principal loop creates either one or six rows (or columns since [K^ ] and 
[Kg ] are symmetric of the stiffness matrix, KGGX, (and the structural damping matrix, K4GG, 
If called for in the DMAP calling sequence). One row will be generated if the pivot point, 
the first word of both the GPCT record and the ECPT record, is a scalar point; six rows will 
be generated if the pivot point is a grid point. The latter case holds in the majority of 
cases. The loop is terminated when an end-of-file is sensed on the file containing the GPCT. 

The loop begins by attempting to read the first two words of the current GPCT record. 
If the second non-standard return from subroutine READ occurs, It implies the current pivot 
point has no elements connected to it so that one or six null rows must be output for the 



4.27-2 



FUNCTIONAL MODULE SMAl (STRUCTURAL MATRIX ASSEMBLER - PHASE 1) 

matrices. This non-standard return, it should be noted, does not occur in the majority of cases. 
A normal return from READ implies a normal path through the principal loop. The remainder of the 
GPCT record is read into core, and a pointer table is constructed. This pointer table relates 
the scalar index numbers of the GPCT record, which are the column indices of the (possible) non- 
zero terms of the generated matrices, to locations in core in which the correspondim submatrices 
will reside. The pointer table is defined recursively as follows: 

P] = 1 (1) 

Pi = Pi-i + q, i > 1 (2) 

where q is 6 if the point (i-1) is a grid point and q is 1 if the point (i-1) is a scalar point. 

It is then determined if all the submatrices corresponding to the current pivot point 
can be held in open core. If they can, there is no problem. If they cannot, spill logic 
is provided only if the structural damping matrix is not called for. Rather than compute all 
submatrices, store them on a scratch file, retrieve them when computations have been completed 
and sort them, the following approach was adopted. It is determined what the maximum number 
of rows that can be held in core is: 3, 2 or 1. The element submatrices are computed in 
their respective routines (i.e. KR0D, KBAR) and passed to the "insertion" subroutine, SMAIB, 
which "inserts" into the correct open core positions only those rows which can be contained. 

When the ECPT record is exhausted, the link vector, LINK, (see discussion below of the 
LINK variable in /SMAICL/) is searched to determine if any structural element entries in the 
ECPT were skipped because the corresponding element subroutine did not reside in the link 
(element subroutine overlay segment) currently in core. If there did exist such an element, 
the ECPT file is backspaced and the ECPT record is reprocessed such that all element sub- 
matrices not computed on the previous pass(es) of the ECPT record will be computed. If 
(or when) the LINK array is Identically zero, signifying that all element submatrices 
corresponding to the current pass of the ECPT record have been computed, the DETCK subroutine 
is called if the input parameter N0GENL sO. DETCK generates the GPST by examining the 
"translational" and "rotational" diagonal 3X3 submatrices of the 6 rows of the KGGX matrix 
currently in core. If the total number of rows to be computed (6 or 1) for the current ECPT 
record is not in core due to spill problems, DETCK stores those elements of the 3 X 3 sub- 



4.27-3 



MODULE FUNCTIONAL DESCRIPTIONS 

matrices currently in core in local variables and then processes the entire 3x3 submatrices on 
the last pass of the ECPT record (see definitions of the variables LR0WIC and NR(JWSC in /SMAICL/ 
below). 

After DETCK returns, the number of rows in core are packed onto the KGGX (and, if called 
for, the K4GG) data block(s) using the standard matrix packing routines BLDPK, ZBLPKI and 
BLDPKN. If the last row in core is not equal to the total number of rows to be computed, 
the ECPT file is backspaced and the record is processed again, this time the next set of 
3, 2 or 1 rows being output. If the last row in core ^s equal to the total number of 
rows to be computed, the processing of the ECPT record is complete and a transfer is made 
to the top of the "GPCT and ECPT processing" loop to process the next record of the GPCT and 
ECPT. The loop terminates when an end-of-file is encountered while attempting to read the 
GPCT. Upon loop termination, SMAIA returns to SMAl. 

It should be noted that the most difficult logic of the routine involves the LINK 
vector and the spill logic. The programmer is advised that the LINK vector logic will not be 
used on any of the current hardware/software configurations because 1) the routine residing 
in segment (link) 2, KC0NE, cannot be used in conjunction with any other structural element 
routine and 2) the axi symmetrical element routines KTRIRG, KTRAPR and KTdRDR cannot (from a 
mathematical modeling point of view) be used in conjunction with any other structural element 
routines. The spill logic is very seldom entered since for the majority of cases the geometry 
of the mathematical model is such that the number of words in any GPCT record - and hence the 
number of (potentially) non-zero columns in any six rows of the matrix - is generally quite 
small. A high upper limit for the number of words in any GPCT record would be 40. 



4.27-4 



FUNCTIONAL MODULE SMAl (STRUCTURAL MATRIX ASSEMBLER - PHASE 1) 

4.27.7.1 Determining Grid Point Singularities in Subroutine DETCK 

Let the pivot point be a grid point with scalar index p in the following discussion. 
Let [Q] be the "translational" or "rotational" 3x3 symmetric submatrix along the diagonal 
of the stiffness matrix, [Kgg], i.e., the rows and columns of the "translational" [Q] matrix 
would correspond to scalar index numbers p, p+1 , and p+2; and the rows and columns of the 
"rotational" [Q] matrix would correspond to scalar index numbers p+3, p+4, and p+5. 

The following steps comprise the algorithm for determining the presence or absence of 
grid point singularities. The discussion assumes [Q] is the "translational" 3x3 matrix but the 
same algorithm holds for the "rotational" [Q]. 

1. The matrix [Q] is scaled by the magnitude of the largest term, Q : 

^ ' ^max 

[B] = ^. (3) 

^max 

If the largest term is non-positive, the singularity is of order 3, and the scalar index 
numbers p, p+1 and p+2 are written on the GPST. 

2. The vector magnitudes of 3x1 columns (rows) are calculated: 



n. 2 2~ 

)i = ^/B + B + B 

^11 12 13 



(4) 



^ 21 



+ b' + b' , (5) 

22 23 



=V^ 



+ B + B . (6) 

32 33 



3. For each b^ = 0, the singularity order counter I0RDER is increased by one. 

4. If two b. are zero, the order of the singularity is two, and the scalar index numbers 
j and k corresponding to these two rows of [B] are written on the GPST. 



4.27-5 



MODULE FUNCTIONAL DESCRIPTIONS 

5. If one b. is zero, and i is the row such that b. = 0, define j and k as the other rows 
of [B] and calculate: 



m = det 



B.. B.. 
J J .Ik 



L^kj ^kk. 



(7) 



' - {'h ' Kt) (Bjk ^ «kk) 



(8) 



If ?r < 10"^, the order of the singularity is 2 and the GPST contains the paired scalar 

index values for i, j, k in the order (1) (i.j) if B,^,^ > or (2) (i.k) if B^^ > 0. 

If ^ > io"2, the order of the singularity is one and only the SIL value for 1 is written 

K "*~ 

on the GPST. 

6. If all b. > 0, we calculate 



D = det [B] 



(9) 



If D > .5 X 10"^ X (b,b2b2), there are no singularities, and DETCK returns if Tq] is the 

"rotational" matrix, or. if [Q] is the "translational" matrix, the "rotational" [Q] is 

input to the algorithm, 

7, If D < .5 x 10"^ X (b,b2b3), one or more singularities exist. The following terms are 

calculated: 



mi 



det 



B22 B23 
B32 B33 



(10) 



m2 ~ 



det 



Bi 1 Bi 3 
B31 B33 



(n: 



ma 



det 



Bi 1 Bj 2 
B2 1 B2 2 



(12) 



4.27-6 



FUNCTIONAL MODULE SMAl (STRUCTURAL MATRIX ASSEMBLER - PHASE 1) 

Ri = \JiB^ + B^ ) (B^ + B^ ) , (13) 

'22 23 3133 

R2 = J(F~rFTTB^~TTn . (14) 

'1113 3 133 ' 

R2 = yJ{B' + B^ ) (B^ + B^ ) . (15) 

'1112 2122 

8. Determine i, j, k such that: 



m. m. m. 



tn.. 2 



9. If ^ < 10 , the singularity is of order 2, Redefine i, j, k such that B.. < B.. < B^. . 

The SIL values for the paired indexes (j,k), (i,k) and (i.j) are written on GPST only if the 

corresponding B is greater than zero. For instance if B.. is zero, the SIL pair (i.j) is not 

written on the GPST. 

""i -2 
10* ^^ r7 *^ 10 . (see step 8) the singularity is of order 1. The SIL values are written 

on the GPST in the order 

""i -2 
1 since B~ > 10 " , (17) 

•^i 

""i -? 
d If ^> 10 ^ . (18) 

'"i -2 
k if ,^> 10 "^ . (19) 



4.27-7 



MODULE FUNCTIONAL DESCRIPTIONS 

4.27.8 Subroutines 

The utility routines PRETRD and PREMAT are called in SMAl for initialization purposes 
so that the structural element subroutines can call the entry points TRANSD of PRETRD and MAT 
of PREMAT to fetch Coordinate System Transformation Matrices (CSTM) data and material 
properties data respectively. GMMATD is used by element routines as a general matrix multiply 
routine, and INVERD is used for inversion of small in-core (order usually < 12) matrices. It 
should be noted that all matrices referenced in the structural element subroutines are stored by 
rows and are double precision. See the subroutine descriptions for these routines in section 3. 

The principal means of communicating an element entry of the ECPT to an element stiffness 
matrix generation routine is through /SMAIET/. This fact is not explicitly stated in each 
of the descriptions of the element routines (e.g. KR0D) given below. Since much of the mathematics 
peeded for generating: (1) element stiffness matrices (module StlAl); (2) element mass and damping 
matrices (module SMA2) ; (3) element contributions to load vectors (module SSGl); (4) element 
stress (and force) data recovery (module SDR2); (5) element differential stiffness matrices 
(module DSMGl); (6) element stress (and force) data recovery for non-linear elements in a 
Piecewise Linear Analysis Rigid Format problem (module PLA3) ; and (7) element stiffness 
matrices for non-linear elements in a Piecewise Linear Analysis problem (module PLA4) , is 
similar or even identical, detailed mathematical algorithims are grouped by element in 
section 4.87. 

It should be noted that routines DKI,DKK,DKM,DKINT,DKJ,DKEF,DK89,DK100,KFAC,DKJAB, 
DK219,DK211,R0MBDK,D4K,D5K,D6K and DMATRX are used only (directly or indirectly) by the 
axi symmetric shell element routines KTRIRG, KTRAPR and KT0RDR. 

4.27.8.1 Subroutine Name: SMAl 

1. Entry Point: SMAl 

2. Purpose: See discussion above. 

3. Calling Sequence: CALL SMAl 

4.27.8.2 Subroutine Name: SMAIA 
1. Entry Point: SMAIA 



4.27-8 



FUNCTIONAL MODULE SMA1 (STRUCTURAL MATRIX ASSEMBLER - PHASE 1) 

2. Purpose: See discussion above. 

3. Calling Sequence: CALL SMAIA 

4.27.8.3 Subroutine Name: SMAIB 

1. Entry Point: SMAIB 

2. Purpose: This routine, called by the module's element stiffness matrix generation 

routines such as KR0D, KBAR, etc., adds a double precision 6 x 6 or 1 x 1 matrix, [K^], to 

X 4 
the "submatrix" of [K ] or [K ] corresponding to the current pivot point. 

3. Calling Sequence: CALL SMAIB (KE,J,II,IFILE,DAMPC) 

KE - Row-stored double precision 6 x 6 or 1 x i matrix to be added to the 
submatrix in core - double precision - input. 

J - The column index of the [K^^] or [K^^] matrix which corresponds to the 
first column of the [K^] matrix - integer - input. 

II - If II is 0, the [K^] matrix is 6x6. If II is greater than zero, it i<: 

X 4 
the row index of the [K^ ] or [K^ ] matrix corresponding to the 1 x 1 

yy yy 

matrix [K®] to be added - integer - input. 

IFILE - GIN0 file number of the matrix In core being added to - KGGX or K4GG - 
integer - input. 



DAMPC 



- If [K ] is 6 X 6 and the [K ] matrix is called for, the input matrix [K®] is 
multiplied by DAMPC before being added to the submatrix of [K^ ] in core. 

gg 

4.27.8.4 Block Data Program Name: SMAIBD 

1. Entry Point: SMAIBD 

2. Purpose: Block data program which sets GIN0 file numbers, 1/0 parameters, and SMAl 
overlay parameters. 

3. Calling Sequence: None 

4.27.8.5 Subroutine Name: DETCK 
1. Entry Point: DETCK 



4.27-9 



MODULE FUNCTIONAL DESCRIPTIONS 

2. Purpose: This routine generates the Grid Point Singularity Table by examining the 
3x3 "translational" and "rotational" diagonal submatrices of the KGGX matrix. This 
routine is called after the submatrix for each pivot point has been completed. 

3. Calling Sequence: CALL DETCK (JARG) 
If JARG = 0, the pivot point has elements connected to it. 
If JARG = -1, the pivot point is a scalar point and no elements are 

JARG - ( connected to it. 

If JARG = 1, the pivot point is a grid point and no elements are connected 
to it. 

4.27.8.6 Subroutine Name: KR0D 

1. Entry Point: KR0D 

2. Purpose: To generate the element stiffness matrix for a R|3D element. 

3. Calling Sequence: CALL KR0D 

4.27.8.7 Subroutine Name: KBAR 

1. Entry Point: KBAR 

2. Purpose: To generate the element stiffness matrix for a BAR element. 

3. Calling Sequence: CALL KBAR 

4.27.8.8 Subroutine Name: KTUBE 

1. Entry Point: KTUBE 

2. Purpose: To generate the element stiffness matrix for a TUBE element. 

3. Calling Sequence: CALL KTUBE 

4.27.8.9 Subroutine Name: KPANEL 

1. Entry Point: KPANEL 

2. Purpose: To generate the element stiffness matrix for a SHEAR or TWIST panel element. 

3. Calling Sequence: CALL KPANEL (lARG) 



4.27-10 



FUNCTIONAL MODULE SMAl (STRUCTURAL rWRIX ASSEMBLER - PHASE 1) 

lARG i^^^^ " ^ "^^^ ^°^ generation of the matrix for a shear panel; 
(lARG = 5 implies a twist panel. 

4.27,8.10 Subroutine Name: KTRMEM 

1. Entry Point: KTRMEM 

2. Purpose: To generate the element stiffness matrix for a TRMEM element. 

3. Calling Sequence: CALL KTRMEM (I) 

( - Do complete triangular membrane. 

I 1 - Return 3 transformed 3x3 matrices only for pivot point. If I = 1, 
KTRMEM is called by KQDMEM. 

4.27.8.11 Subroutine Name: KQDMEM 

1, Entry Point: KQDMEM 

2, Purpose: To generate the element stiffness matrix for a QDMEM element. 

3, Calling Sequence: CALL KQDMEM 

4.27.8.12 Subroutine Name: KTRBSC 

1. Entry Point: KTRBSC 

2. Purpose: To generate the element stiffness matrix for a basic bending triangle 
element. 

3. Calling Sequence: CALL KTRBSC (I) 

!0 - Do complete element computation for basic bending triangle 
1 - Form only the [K^] 9x9 matrix. 
2 - Form only the [K^^] 9x9 matrix but save the [HT^ and [S] matrices. 
4.27.8.13 Subroutine Name: KTRPLT 

1. Entry Point: KTRPLT 

2. Purpose: To generate the element stiffness matrix for a triangular plate element. 

3. Calling Sequence: CALL KTRPLT 



4.27-11 



MODULE FUNCTIONAL DESCRIPTIONS 

4.27.8.14 Subroutine Name: KQDPLT 

1. Entry Point: KQDPLT 

2. Purpose: To generate the element stiffness matrix for a quadrilateral plate element. 

3. Calling Sequence: CALL KQDPLT 

4.27.8.15 Subroutine Name: KTRIQD 

1. Entry Point: KTRIQD 

2. Purpose: To generate the element stiffness matrix for any of the following elements: 
TRIA1JRIA2.QUAD1,QUAD2. 

3. Calling Sequence: CALL KTRIQD (lARG) 

il - TRIAl element. 
2 - TRIA2 element. 
3 - QUADl element. 
4 - QUAD2 element. 

4.27.8.16 Subroutine Name: KELAS 

1. Entry Point: KELAS 

2. Purpose: To generate stiffness matrix contributions from the ELASl ,ELAS2,ELAS3 and 
ELAS4 elements and structural damping matrix contributions from the ELASl ,ELAS2 and 
ELAS3 elements. 

3. Calling Sequence: CALL KELAS (lARG) 

lARG - Indicates the type of element being processed. It can take on the values 

1,2,3 and 4 denoting the ELASl .ELAS2,ELAS3 and ELAS4 elements respectively. 
Integer-input. 

4.27,8.17 Subroutine Name: KBEAM 

1. Entry Point: KBEAM 

2. Purpose: To generate the element stiffness matrix for a BEAM element. 

3. Calling Sequence: CALL KBEAM 



4.27-12 



FUNCTIONAL MODULE SMAl (STRUCTURAL MATRIX ASSEMBLER - PHASE 1) 

4.27.8.18 Subroutine Name: KC0NE 

1. Entry Point: KC0NE 

2. Purpose: To generate the element stiffness matrix for a conical shell problem. 

3. Calling Sequence: CALL KC0NE 

4.27.8.19 Subroutine Name: KTRIRG 

1. Entry Point: KTRIRG 

2. Purpose: To calculate an element stiffness matrix for a triangular cross-section 
ring, TRIARG, element. 

3. Calling Sequence: CALL KTRIRG 

4.27.8.20 Subroutine Name: KTRAPR 

1. Entry Point: KTRAPR 

2. Purpose: To calculate an element stiffness matrix for a trapezodial cross-section 
ring, TRAPR6, element. 

3. Calling Sequence: CALL KTRAPR 

4.27.8.21 Subroutine Name: KT0RDR 

1. Entry Point: KT0RDR 

2. Purpose: To calculate an element stiffness matrix for a toroidal thin shell ring. 
T0RDRG, element. 

3. Calling Sequence: CALL KT0RDR 

4.27.8.22 Function Name: OKI 

1 . Entry Point: DKI 

2. Purpose: To evaluate integrals in double precision for the triangular and 
trapezoidal cross-section rings in subroutines KTRIRG and KTRAPR. 

3. Calling Sequence: DP = DKI (I.J,K,L.M,N,IP,IQ,R,Z) 



4.27-13 



MODULE FUNCTIONAL DESCRIPTIONS 

I.J - The subscripts of R defining two lines on the limit of integration, 

integer-input. 
K. L . The subscripts of R, Z defining another line on the limit of integration, 

integer-input. 
M, U - The subscripts of R, Z defining the fourth line on the limit of 

integration, integer-input. 
IP.IQ - Integers that define the power of the r and z variables respectively, 

- input. 
R,Z - Vectors of the r and z coordinates of all points used to describe the 

area of integration, double precision - input. 

4.27.8.23 Function Name: DKK 

1. Entry Point: DKK 

2. Purpose: To calculate the slope of a line given two points in function DKI. 

3. Calling Sequence: DP = DKK (I.J.R.Z) 

I.J - The subscripts of R, Z defining the two points. 
R. Z - Vectors of the r and z coordinates. 

4.27.8.24 Function Name: DKM 

1. Entry Point: DKM 

2. Purpose: To calculate the y-intercept of a line given two points in function DKI. 

3. Calling Sequence: DP = DKM (I,J,R,Z) 

I, J - The subscripts of R, Z defining the two points. 

R, Z - Vectors of the r and z coordinates. 

4.27.8.25 Function Name: DKINT 

1. Entry Point: DKINT 

2. Purpose: To evaluate the following function in the F0RTRAN function routine DKI: 



4.27-14 



where 



and 



FUNCTIONAL MODULE SMAl (STRUCTURAL MATRIX ASSEMBLER - PHASE 1) 



1 w 
fi(A,B) = -L z CPEF . A^ • B*^'^ • AJ (20) 

" t=0 



h ±i|±i for t ^ 
s=i s 

C0EF '\ (21) 

1 for t = 



RfJl (w+v-t+1) p,,, (w+v-t+1) 

^^ ^ ^ , f[^l 1 for (w+v-t+1 ) / 

^"'^tlfy-' ^°^ (w+v-t+i) = 



AJ 



3. Calling Sequence: DP = DKINT (I,J,A,B,V,W,R,Z) 
I, J - The subscripts of R, Z. 

A, B - The arguments of the function f in Equation 20. 
V, W - Integer parameters of the function. 
R. Z - Vectors of the r and z coordinates. 

4.27.8,26 Function Name: DKJ 

1. Entry Point: DKJ 

2. Purpose: To evaluate the following function in function DKINT. 

r R(j) ^^-^^^ -R(i) ^'^^^ , ,, , „ 

l-i— ^ g ^ ] ^ for s+1 ^ 

DKJ = < 

(ln[|^] for s+1 = 



3. Calling Sequence: DP = DKJ (I.J.R.S) 
I.J - The subscripts of R 



(22) 



(23) 



4.27-15 



MODULE FUNCTIONAL DESCRIPTIONS 

R - Vector of the r coordinates. 

S - Integer parameters of the function. 

4.27.8.27 Function Name: DKEF 

1. Entry Point: DKEF 

2. Purpose: To evaluate the following function in function DKINT 

^ w=sli for t ?* Q 
s=l s 

I] for t = 0. 

3. Calling Sequence: DP = DKEF (T.W) 

Xj W - Integer parameters of the function. 

4.27.8.28 Function Name: DK89 

1. Entry Point: DK89 

2. Purpose: To evaluate the following function in function DKI. 



DKEF= <'-' ' (24) 



T ^ <^ f25l 

DK89(I.A.B) = -4^ Z M! {-A)' • d , ^ ' 

b" ' s=0 



where 



d = 



| (M-S)! SKM+1-N-S) ^°'^ ^"^' N b) ^ u 

hn(|A + B-R(I)I) f-r (M+l-N-S) = 
' (M+ 1 -N)! (N-1)! ^°^ ^" ' ^' 



3. Calling Sequence: DP = DK89 (I,A,B,M,N,R) 

I - The subscript of R. 

A, B - The arguments of the function. 

M, N - Integer parameters of the function. 

R - Vector of the r coordinates 

4.27.8.29 Function Name: DKIOO 

1. Entry Point: DKIOO 

4.27-16 



(26) 



FUNCTIONAL MODULE SMAl (STRUCTURAL MATRIX ASSEMBLER - PHASE 1) 

2. Purpose: To evaluate the following function in subroutine DKI. 

, M+N-2 
DKlOOd.A.B) = (f^;^.^) I (M+N-2) !-d , (27) 



where 



(A+B-R(I})^^-^-^^-(-B)^ for (M-l-S) / 

(M+N-2-S)! S! (M-l-S)-R(I)'""^"^^ 
d = ( (28) 

A+B R(i; 



Mtlnn( 



,,, ROT 
(M-1)!(N-1)! 



for (M-l-S) = 



3. Calling Sequence: DP= DKIOO (I ,A,B,M,N,R) 

I - The subscript of R. 

A, B - Ihe arguments of the function. 

H, U - Integer parameters of the function. 

R - Vector of the r coordinates. 

4.27.8.30 Function Name: KFAC 

1. Entry Point: KFAC 

2. Purpose: To evaluate the factorial function in functions DK89 and DKIOO. 

3. Calling Sequence: K = KFAC (N) 

N - The integer argument of the function. 

If N < 2, the functional value is set to 1. 

4.27.8.31 Function Name: DKJAB 

1. Entry Point: DKJAB 

2. Purpose: To evaluate the following function in F0RTRAN function DKI using the 
function evaluated in F0RTRAN function DK89. 

DKJAB(I.A.B) = R(I)^1n(|A^B.R(I)|) _B .p^3g(^^^^3^_ 



4.27-17 



(29) 



MODULE FUNCTIONAL DESCRIPTIONS 

3. Calling Sequence: DP= DKJAB (I,A,B,M,N,R) 

I - The subscript of R. 

A, B - The arguments of the function. 

M, N _ Integer parameters of the function. 

R - Vector of the r coordinates. 

4.27.8.32 Function Name: DK219 

1. Entry Point: DK219 

2. Purpose: To evaluate the following function in F0RTRAN function DKI using the 
function evaluated in FORTRAN function OKI 00. 

0K219 (l.A.B) = -MlAiimil (30) 

M.R(I)'^ 

+ ^ • DKIOO (I.A.B) 

3. Calling Sequence: DP= DK219 (I.A.B.M.N.R) 

I - The subscript of R. 

A, B - The arguments of the function. 

M, N - Integer parameters of the function. 

R - Vector of the r coordinates. 

4.27.8.33 Function Name: DK211 

1. Entry Point: DK211 

2. Purpose: To evaluate the following function in F0RTRAN function DKI. 

iO for B-R(I) = A 

^ln(|2-B-R(I)|)]^ for B-R(I)?«A. [B-R(I)]^=A^ 

[ln|A|].[!n|R(I)|] - tfi p[^:^^]^ for [B-R(I)]^ < A^ ^^l) 

iln(|B-R{I)|)]^ + E ir -A f for [B-R(I)]^ > A^ 
'- t=i ^ Lb-r(I)J 



4.27-18 



FUNCTIONAL MODULE SMA1 (STRUCTURAL MATRIX ASSEMBLER - PHASE 1) 

3, Calling Sequence: DP = DK211 (I.A.B.R) 

I - The subscript of R. 
A, B - The arguments of the function. 
R - Vector of the r coordinates. 

4.27.8.34 Subroutine Name: R0MBDK 

1. Entry Point: R0MBDK 

2. Purpose: To evaluate integrals in double precision for the toroidal thin shell 
ring in subroutine KT0RDR. 

3. Calling Sequence: CALL R0MBDK (A, B,N0SIG, PRECIS, NUM. ITD!aNE,FINTG,K0DE,FUNCT,X) 

A, B - Lower and upper limit of integration respectively. 

N0SIG - Number of correct significant digits desired. 

PRECIS - Actual number of significant digits attained. 

NUM - Maximum number of halvings of the interval [A,B] to be made. 

ITD0NE - Actual number of halvings of the interval [A,B]. 

FINTG - Resultant value of integral. 

K0DE - Print control (not used). 

FUNCT - Function subprogram used to evaluate the integral. 

X - Vector of parameters used by function subprogram. 

4.27.8.35 Function Name: D4K 

1. Entry Point: D4K 

2. Purpose: To evaluate the following function to be integrated by subroutine R0MBDK. 

D4K = ;^^-sin'^ ^_ (32) 

Ri-R -sin oii+R -sin ai-cos ({)+R -cos oi-sin^ * 

r r r 

3. Calling Sequence: DP = D4K (X) 

X - Vector of function parameters. 

X(l) - 

X(2) - R„ 



P 
X(3) - R 



1 

4.27-19 



MODULE FUNCTIONAL DESCRIPTIONS 

X(4) - cos aj 
X(5) - s1n oi 
X(6) - J + 1 

4.27.8.36 Function Name: D5K 

1. Entry Point: D5K 

2. Purpose: To evaluate the following function to be integrated by subroutine R0MBDK. 



D5K = <{)'^-2-sin(j)-coS(j) . (33) 

Ri-R -sinai + R -sinai cosi^i + R-cosai -si n(|) 



3. Calling Sequence: DP= D5K (X) 



X 


- 


Vector of function parameters 


X(l) 


- 


<t> 


X(2) 


- 


\ 


X{3) 


- 


^^ 


X{4) 


- 


cos ai 


X(5) 


- 


sin ai 


X(6) 


- 


J + 1 



4.27.8.37 Function Name: D6K 

1. Entry Point: D6K 

2. Purpose: To evaluate the following function to be integrated by subroutine R0MBDK. 

J 2 

rjCi' - t]) cos (j) /jA) 

Ri-R -sinai + R -sinai •coscfi + R •cosai-sincf) 

r r r 

3. Calling Sequence: DP = D6K (X) 

X - Vector of function parameters. 

X(l) - <!> 

X(2) - Rp 

X(3) - R^ 

X(4) - cos ai 



4.27-20 



FUNCTIONAL MODULE St4Al (STRUCTURAL MATRIX ASSEMBLER - PHASE 1) 

X(5) - sin ai 
X(6) - J + 1 

4.27.8.38 Subroutine Name: DMATRX 

1. Entry Point: DMATRX 

2. Purpose: To form the element stiffness matrix in field coordinates for the toroidal 
thin shell ring in subroutine KT0RDR. 

3. Calling Sequence: CALL DMATRX (D,V,C,CA,CA2,VA,DM,DB,YI) 

D - Resultant stiffness matrix. 

V.CCA, 

CA2,VA, - Terms used in the evaluation of the stiffness matrix. 

DM.DB 

YI - Array of integral values. 
4.27.9 Design Requirements 
4.27.9.1 Open Core Design 

The open core common block for module SMAl is defined by the following F0RTRAN statements; 

1. D0UBLE PRECISION DZ(1) 

2. INTEGER IZ(1) 

3. C0MM0N /SMAIX/ Z(l) 

4. EQUIVALENCE (Z(l ) ,IZ(1 ) ,DZ(1 )) . 

The open core layout is given in Figure 1. 



4.27-21 



MODULE FUNCTIONAL DESCRIPTIONS 



ICSTM 
IMATl 



IGPCT 



IP0INT 



I6X6K 




IGGPST 

IGGPCT 

IGECPT 

IG4GG 

IGKGG 



C0MH0N /SMAIX/ 



CSTM Data 



MPT and DIT 
read in core by 
PREMAT and fetched 
by MAT 



GPCT Data 



Pointer table defined 
ir Equations 1 and 2 



Subma trices for KGGX 
and K4GG for the current 
pivot point. 



GIN0 buffer for GPST 



GIN0 buffer for GPCT 



GIN0 buffer for ECPT 



GIN0 buffer for K4GG 



GIN0 buffer for KGGX 



Figure 1. Open core layout for module SMAl. 



4.27-22 



FUNCTIONAL MODULE SMAl (STRUCTURAL MATRIX ASSEMBLER - PHASE 1) 

The definition of the variables is as follows: 

ICSTM - The zero pointer to the CSTM portion of open core; defined to be zero. 

IMATl - The zero pointer to the MPT and DIT data read into core by subroutine PREMAT; 
defined to be ICSTM + NCSTM, where NCSTM is the length of the CSTM portion 
of open core. 

IGPCT - The zero pointer to the 6PCT portion of open core; defined to be IMATl + MATCR, 
MATCR being the length of open core used by subroutine PREMAT. 

IP0INT - The zero pointer to the pointer table in open core. The pointer table is used 
as a dictionary to relate the GPCT to the submatrices in core; defined to be 
IGPCT + NGPCT, NGPCT being the length of the GPCT. 

I6X6K - The zero pointer to the submatrices of KGGX; I6X6K = (IP0INT + NP0INT -1)/ 
2+2 where NP0INT = NGPCT is the length of the pointer table. The extra 
arithmetic to define I6X6K is necessary because the submatrices are double 
precision numbers. While the above indices are single precision indices, 
I6X6K is a double precision index. 

16X64 - The zero pointer to be submatrices of K4GG; 16X64 = I6X6K + N6X6K, where 

N6X6K is the number of double precision numbers in the submatrices of KGGX. 
16X64 is a double precision Index. 

The pointers for the GIN0 buffers, IGGPST, IGGPCT, IGECPT, I64GG and IGKGG are, 
unlike the above, 'one' pointers. It should be noted that the lengths NCSTM and MATCR are 
constant throughout the module operation, while the length of the GPCT data will vary from pivot 
point to pivot point as the ECPT and GPCT data blocks are processed serially. (Hence it is 
probable that for a pivot point with a relatively small number of elements connected to it the 
entire submatrix may be held in core, while spill logic will be entered only when a pivot point 
has a great many elements connected to it.) 

4.27.9.2 Block Data Subprogram 

The block data program SMAIBD sets GIN0 file numbers, 1/0 parameters and SMAl overlay 
parameters in common blocks /SMAl 10/ and /SMAlCL/. 

4.27.9.3 Common Storage Requirements 

Blank common is used only tor DMAP parameters. The following common blocks are used 
throughout the module: /SMAl 10/, /SMAlBK/, /SMAlCL/, /SMAIET/ and /SMAl DP/. They are given 
in detail here since other matrix assembler modules such as SMA2 and DSMGl are designed similarly. 
All common block variables are integer except (1) D0DET in /SMAlCL/ which is a logical variable; 
(2) the array in /SMAIET/ which is a mixed (integer and real) array; and (3) the double 
precision array in /SMAl DP/. 

4.27-23 



MODULE FUNCTIONAL DESCRIPTIONS 

1. The SMAl 1(2 common block is 36 words in length and is used for SMA1 input/output 
parameters. 

Definition 

GIN0 file number for the CSTM data block. 

GIN0 file number for the MPT data block. 

GIN0 file number for the DIT data block. 

Undefined. 

GIN0 file number for the ECPT data block. 

GIN0 buffer pointer for the ECPT. 

GIN0 file number for the GPCT data block. 

GIN0 buffer pointer for the GPCT. 

Undefined. 

GIN0 file number for the KGGX data block. 

GIN0 buffer pointer for KGGX. 

GIN0 file number for the K4GG data block. 

GIN0 buffer pointer for K4GG. 

GIN0 file number for the GPST data block. 

GIN0 buffer pointer for the GPST. 

Input with rewind option for subroutine 0PEN. 

Output with rewind option for subroutine 0PEN. 

Close without rewind option for subroutine CL0SE. 

Close with rewind option for subroutine CL0SE. 

No end-of-record indicator for subroutine READ. 

End-of-record indicator for subroutine READ. 

Matrix control block for the KGGX matrix. 

Matrix control block for the K4GG matrix. 

2. The SMAIBK common block is 10 words in length and is used -For SMAl open core bookkeeoing 
parameters. It contains zero pointers and lengths for the various sub-arrays in open core. 



Word Number 


Variable 


1 


IFCSTM 


2 


IFMPT 


3 


IFDIT 


4 


IDUMl 


5 


IFECPT 


6 


IGECPT 


7 


IFGPCT 


8 


IGGPCT 


9-10 


IFGEI.IG 


11 


IFKGG 


12 


IGKGG 


13 


IF4GG 


14 


IG4GG 


15 


IFGPST 


16 


IGGPST 


17 


INRW 


18 


0UTRW 


19 


CLSNRW 


20 


CLSRW 


21 


NE0R 


22 


E0R 


23-29 


MCBKGG 


30-36 


MCB4GG 



4.27-24 



FUNCTIONAL MODULE SMAl (STRUCTURAL- MATRIX ASSEMBLER - PHASE 1) 



Word Number Variable 



ICSTM 



2 


NCSTM 


3 


IGPCT 


4 


NGPCT 


5 


IP0INT 


6 


NP0INT 


7 


I6X6K 


8 


N6X6K 


9 


16X64 


10 


N6X64 



Definition 

Zero pointer to the CSTM sub-array in open core. For 
example the first location of this sub-array is referenced 
as IZ (ICSTM +1). 

Length of the CSTM sub-array in open core. 

Zero pointer to the GPCT sub-array in open core. 

Length of the GPCT sub-array. 

Zero pointer to the POINT sub-array in open core. 

Length of the P0INT sub-array. 

Zero pointer to the 6x6 submatrices of KGGX. 

Number of words allocated to the 6x6 submatrices of KGGX. 

Zero pointer to the 6x6 submatrices of K4GG. 

Undefined. 



3. The SMAICL common block is 133 words in length and is used for module control parameters. 



Word Number Variable 

1 I0PT4 

2 K4GGSW 

NPVT 
LEFT 
FR0WIC 



LR0WIC 



NR0WSC 
TNR0WS 



Definition 

Indicator used by element routines denoting whether or not 
the K4GG matrix will be generated. I0PT4 = 0, implies no 
generation; I0PT4 = 1 implies generation. 

Indicator set to -1 initially. If I0PT4 = 1, then element 
routines will set K4GGSW = 1, when a non-zero element 
structural damping matrix is generated. 

The scalar index which is the pivot point. This is the first 
word of every record of the ECPT data block. 

The number of words of open core remaining after all sub- 
airays in open core have been allocated. 

The first row of the submatrices in core. If all six rows 
o-f the matrices to be generated cannot be held in core, spill 
logic is initiated, and 3, 2 or 1 rows of the submatrices are 
generated during each pass of the ECPT record for the pivot 
point which causes the spill. FR0WIC can take on the values 
1,2,3,4,5 or 6. 

The last row of the submatrices in core. LR0WIC is defined as 
FR0WIC + NR0WSC -1, where NR0WSC is the number of rows in core. 
If there are no spill problems, then LR0WIC = 6 if the pivot 
point is a grid point, and LR0WIC = 1 if the pivot point is a 
grid point. 

The number of rows of the submatrices currently in core. 

Total number of rows of the submatrices to be generated. 
TNR0WS = 6 if the pivot point is a grid point and TNR0US = 1 
if the pivot point is a scalar point. This definition holds 
whether or not the K4GG matrix is to be generated. (In 
actuality, if the K4GG is generated the total number of rows 



4.27-25 (7/1/70) 



MODULE FUNCTIONAL DESCRIPTIONS 

Word Number Variable Definition 

generated for any ECPT record is 12 or 2). 

9 JMAX The number of columns of KGGX (and K4GG) to be generated with 

the current ECPT record. 

10 NLINKS The number of machine links (overlay segments) necessary to 

contain the module's element routines. Currently NLINKS is 
defined to be 3. This variable is used in conjunction with 
the LINK array defined below. For machines with large 
memories, it is desirable to have all element routines in one 
link, for when in any ECPT record there are elements which 
reside in different links, overlay overhead can be very costly 
(particularly on second generation computing systems). 

11-50 IjJVRLY Array of length 40 which defines in which link an element 

routine resides. I0VRLY(I) = 1,2 or 3 defines the link, 1 , 2 or 
3, in which the Ith element routine resides. Currently element 
numbers 2 and 35, the BEAM and the C0NE, reside in link 2; 
element numbers 36,37 and 38, the TRIARG, TRAPRG and the 
T0R0DRG reside in link 3; all other elements, except element 
numbers 31,32,33,39 and 40 which are not defined for the dis- 
placement method, reside in link 1. 

51-90 LINK Before the current ECPT record is read for the first time, the 

LINK array is set to -1 for LINK(I), 1=1, ...NLINKS. When 
the first element is read from the ECPT, the proper element 
routine is called, thereby loading the link in which that 
element routine resides. The variable LINC0R, the link in core, 
is defined as LINC0R = I0VRLY(ITYPE) , where ITYPE is the ele- 
ment's internal number, e.g., R0D = 1, BEAM = 2, etc. For the 
next element read from the ECPT, it is determined in what link 
it resides. If it resides in the link which is in core, the 
element routine is called. If the routine does not reside in 
the link currently in core, it is determined whether (a) the 
link has already been processed or (b) the link has not been 
processed in which case a "to-be-processed-later" flag is 
set. For case (a) LINK (ITEMP) is 1; for case (b) LINK(ITEMP) 
is set = 0, where ITEMP = I0VRLY(ITYPE). When an end-of- 
record is sensed for the ECPT, LINK(LINC0R) is set to 1 and 
LINK array is searched for zeros. If there are no zeros, the 
processing of the ECPT record is complete. If there are zeros, 
that is, links to be processed, the file corresponding to the 
ECPT is backspaced and processing of the record is repeated. 

91-130 NW0RDS NW0RDS(ITYPE) is the number of words in an ECPT entry for an 

element routine whose internal number is ITYPE. For ITYPE =1 
(a R0D), NW0RDS(1) = 17, for ITYPE = 34 (a BAR), NW0RDS(34) = 
42, etc. 

131 N0G0 Flag used to indicate if a user fatal error message occurred 

in the processing of any element. N0G0 = 1 indicates an error. 
Execution is terminated upon completion of the processing of 
the GPCT. N0G0 = indicates no error. Continue execution. 

132 IDETCK Used as a first pass indicator in the DETCK subroutine. There 

will be multiple passes through the DETCK routine, for each 
ECPT record, only if there are spill problems, i.e., the total 
number of rows to be generated for the ECPT record will not fit 
in core. 



4.27-26 (7/1/70) 



FUNCTIONAL MODULE SMA1 (STRUCTURAL MATRIX ASSEMBLER - PHASE 1) 

133 D0DET Logical variable which if true implies the DETCK routine will 

be called and if false will not be called. If the input para- 
meter, M0GENL, is greater than zero, implying general elements 
exist, then D0DET is set false. Otherwise D0DET is true. 

4. The common block SMAIET is 100 words in length and is used as the means of communicatina 
the element data from the ECPT data block to the element subroutines. 

5. The common block SMAIDP defines an array of 300 double precision words . This block is 
used as "scratch" storage by element routines. Those variables which in most FORTRAN 
programs would be local subroutine variables are defined in /SMAIDP/ by the module's element 
routines in order to preserve core storage and hence increase open core. 

4.27.9.4 Arithmetic Considerations 

All floating point arithmetic operations are carried out in double precision. Both 

[K^ ] and [K* ] are double precision matrices, 
yy yy 

4.27.10 Diagnostic Messages 

The module has a variety of "fail-safe" error checks. If any of these checks fails, it 
implies an obsure program design error or a computer operating system/hardware failure. 
Diagnostic messages 2022, 2023, 2034 are of this type. 

User fatal error messages 2025, 2026, 2031. 2032, 2033, 2035, 2036, 2037, 2038, 2039 
and 2040 occur when one of the structural element routines encounters some user data which 
makes generation of an element matrix impossible. Examples would include a user defining 
a R0D or BAR element of zero length; a user defining the four points of a SHEAR panel element 
not in the proper cyclical order; a user defining TRPLT data so that a matrix in an algorithm 
is non-singular; etc. Whenever this type of user fatal error occurs, the module queues all error 
messages and finishes processing all the data before terminating execution with a call to PEXIT. 

Detailed descriptions of these error messages can be found in section 6 of the User's Manual 



4.27-27 (7/1/70) 



FUNCTIONAL MODULE SMA2 (STRUCTURAL MATRIX ASSEMBLER - PHASE 2) 

4.28 FUNCTIONAL MODULE SMA2 (STRUCTURAL MATRIX ASSEMBLER - PHASE 2) 

4.28.1 Entry Point : SMA2 

4.28.2 Purpose 

To generate the mass matrix [M„„] and the damping matrix [B ]. 

99 r S U ggj 

4.28.3 DMAP Calling Sequence 

SMA2 CSTM,MPT,ECPT.GPCT,DIT/MGG,BGG/V,Y,WTMASS=1.O/V.N,N0MGG/V,N,N0BGG/V,Y, 
C0UPBAR=-1 $ 

4.28.4 Input Data Blocks 

CSTM - Coordinate System Transformation Matrices. 

MPT - Material Properties Table. 

ECPT - Element Connection and Properties Table. 

GPCT - Grid Point Connection Table. 

DIT - Direct Input Tables. 

Notes : 

1. The CSTM may be purged. 

2. If some element references a material property, the MPT cannot be purged. 

3. Neither the ECPT nor the GPCT may be purged. 

4. If some material property is temperature dependent, DIT cannot be purged. 

4.28.5 Output Data Blocks 

M6G - Partition of mass matrix - g set. 
BGG - Partition of damping matrix - g set. 

Notes : 

1. MGG cannot be pre-purged. 

2. BGG can be pre-purged. 



4.28-1 



MODULE FUNCTIONAL DESCRIPTIONS 

4.28.6 Parameters 

WTMASS - Input-real-default value (in DMAP calling sequence) = 1.0. WTMASS is the scalar 
value by which the generated mass matrix will be multiplied before the columns 
are packed onto the output file. WTMASS is the ratio of mass to weight. 

NiJMGG - Output-integer-no default value. N0MGG is set equal to -1 if the generated 
mass matrix is the zero matrix. Otherwise it is set = +1. 

NjJBGG - dutput-1nteger-no default value. If the BGG matrix is either pre-purged or is 
generated as the zero matrix, NjZBGG is set = -1. Otherwise it is set = +1. 

C0UPBAR- Input-integer-default value = -1. If C0UPBAR = -1, "consistent" mass matrices for 
all BAR elements will not be generated; if C0UPBAR > 0, "consistent" mass matrices 
for all BAR elements will be generated. 

4.28.7 Method 

SMA2 is structured similarly to module SMAl. A separate module was written to generate 
the mass and damping matrices in order to maximize the amount of open core space available 
for element matrices during matrix generation. This core space was especially critical on 
the development computer, the IBM 7094-7040 DCS. Since SMA2 is so similar to SMAl, the 
details of the similarities will not be repeated here; the differences will be pointed out. 
The reader 1s referred to the Module Functional Description (MFD) for SMAl (section 4.27). 

When all rows (or. In the case of spill, the number of rows in core) for each pivot 
point have been computed, each matrix element of [M ] is multiplied by WTMASS before being 
packed onto the output data block MGG. 

4.28.8 Subroutines 

SMA2, like SMAl, uses the utility routines PRETRD, PREMAT and GMMATD. 

The principal means of communicating an element entry of the ECPT to an element mass or 
damping matrix generation routine is through /SMA2ET/. This fact is not explicitly stated in 
each of the descriptions of the element routines (e.g., MR0D) given below. 



4.28-2 



FUNCTIONAL MODULE SMA2 (STRUCTURAL MATRIX ASSEMBLER - PHASE 2) 

The following list gives a correspondence between SMAl and SMA2 routines that are used only 
{directly or indirectly) by the axi symmetric shell element routines TRIARG and TRAPRG. All 
of the SMA2 routines are the same as their SMAl counterparts except for name. The reason for 
duplicating these routines with different names was to maximize open core for element matrices 
in SMAl and SMA2, which both reside in the same NASTRAN link. For details on each of the 
routines, see the corresponding SMAl counterpart (section 4.27.8). 

SMAl SMA2 

DKI DMI 

DKK DMK 

DKM DMM 

DKINT DMINT 

DKJ DMJ 

DKEF DMEF 

DK89 DM89 

DKIGO DM100 

KFAC MFAC 

DKJAB DMJAB 

DK219 DM219 

DK211 DM211 



4.28-3 



MODULE FUNCTIONAL DESCRIPTIONS 

4.28.8.1 Subroutine Name: SMA2 

1. Entry Point: SMA2 

2. Purpose: The module driver which parallels SMAl . For further details see the 
method section of the MFD for SMAl (section 4.27.7). 

3. Calling Sequence: CALL SMA2 

4.28.8.2 Subroutine Name: SMA2A 

1. Entry Point: SMA2A 

2. Purpose: To generate [M ] and [B ]. This routine parallels SI'IAIA. See the MFD 
for SMAl for details on SMAIA (section 4.27.8). 

3. Calling Sequence: CALL SMA2A. 

4.28.8.3 Subroutine Name: SMA2B 

1. Entry Point: SMA2B 

2. Purpose: To add a double precision 6 by 6 or 1 by 1 matrix [K®] to the "submatrix" of 
[M ] or [B ] corresponding to the current pivot point. 

3. Calling Sequence: CALL SMA2B (KE.J.II.IFILE.DOMDP) . 
KE.J.II are as defined for subroutine SMAIB (see section 4.27.8). 

IFILE - GIN0 file number of the matrix in cere being added to [M ] or [B ]-integer-input. 

DUMDP - A dumtty double precision argument added so that the calling sequence to 
SMA2B would conform to that of SMAIB. 

4.28.8.4 Block Data Program Name: SMA2BD. 

1. Purpose: To set GIN0 file numbers, 1/0 parameters and SMA2 overlay parameters in 
/SMA2I(5/ and /SMA2CL/. 



4.28-4 



FUNCTIONAL MODULE SMA2 (STRUCTURAL MATRIX ASSEMBLER - PHASE 2) 

4.28.8.5 Subroutine Name: MR0D 

1. Entry Point: MR0D 

2. Purpose: To generate the element mass matrix for a R0D element. 

3. Calling Sequence: CALL MR0D. 

4.28.8.6 Subroutine Name: MTUBE 

1. Entry Point: MTUBE 

2. Purpose: To generate the element mass matrix for a TUBE element. 

3. Calling Sequence: CALL MTUBE 

4.28.8.7 Subroutine Name: MASSTQ 

1. Entry Point: MASSTQ 

2. Purpose: To generate an element mass matrix for any of the two-dimensional 
structural elements listed under the Calling Sequence. 

3. Calling Sequence: CALL MASSTQ{IARG) 

4 = TRMEM 

1 = QDMEM 
3 = TRBSC 

3 = TRPLT 
7 = QDPLT 

5 = TRIAl 

4 = TRIA2 

2 = QUADl 
1 = QUAD2 

6 = SHEAR 
6 = TWIST 



lARG 



4,28-5 



MODULE FUNCTIONAL DESCRIPTIONS 

4.28.8.8 Subroutine Name: MBAR 

1. Entry Point: MBAR 

2. Purpose: To generate the "diagonal" (uncoupled) element mass matrix for a BAR 
element. 

3. Calling Sequence: CALL MBAR 

4.28.8.9 Subroutine Name: MCBAR 

1. Entry Point: MCBAR 

2. Purpose: To generate the "consistent" (coupled) element mass matrix for a BAR 
element, 

3. Calling Sequence: CALL MCBAR 

4.28.8.10 Subroutine Name: MC0NMX 

1. Entry Point: MCjJNMX 

2. Purpose: To generate an element mass matrix for either of the two concentrated- 
mass-elements listed under Calling Sequence. 

3. Calling Sequence: CALL MC0NMX(IARG) 

!1 " C0NM1 
2 = C0NM2 

4.28.8.11 Subroutine Name: MC0NE 

1. Entry Point: MC0NE 

2. Purpose: To generate an element mass matrix for the axisymmetric conical shell 
element (C(JNE). 

3. Calling Sequence: CALL MCjilNE 



4.28-6 



FUNCTIONAL MODULE SMA2 (STRUCTURAL MATRIX ASSEMBLER - PHASE 2) 
4.28.8.12 Subroutine Name: MASSD 

1. Entry Point: MASSD 

2. Purpose: To generate! by 1 element mass matrices for scalar elements MASS1, 1 = 1,2,3,4; 
and 1 by 1 element damping matrices for scalar dancing elements DAMPi , 1 = 1,2,3,4. 

3. Calling Sequence: CALL MASSD(I) 

1 - Generate element mass matrix for a MASSl element, 

2 - Generate element mass matrix for a MASS2 element, 

3 - Generate element mass matrix for a MASS3 element, 

4 - Generate element mass matrix for a MASS4 element, 

5 - Generate element damping matrix for a DAMPI element, 

6 - Generate element damping matrix for a DAMP2 element, 

7 - Generate element damping matrix for a DAMP3 element, 

8 - Generate element damping matrix for a DAMP4 element. 

4.28.8.13 Subroutine Name: MTRIRG 

1. Entry Point: MTRIRG 

2. Purpose: To generate an element mass matrix for a triangular cross-section ring, 
TRIARG, element. 

3. Calling Sequence: MTRIRG. 

4.28.8.14 Subroutine Name: MTRAPR 

1. Entry Point: MTRAPR 

2. Purpose: To generate an element mass matrix for a trapezoidal cross-section ring, 

TRAPRG, element. 

3. Calling Sequence: CALL MTRAPR. 

4.28.8.15 Subroutine Name: MT0RDR 
1. Entry Point: MT(3RDR 



4.28-7 



MODULE FUNCTIONAL DESCRIPTIONS 

2. Purpose: To generate an element mass matrix for a toroidal thin shell ring, TjJRDRG, 
element. 

3. Calling Sequence: CALL MT0RDR. 

4.28.8.16 Subroutine Name: BVISC 

1. Entry Point: BVISC 

2. Purpose: To generate an element damping matrix for a VISC element. 

3. Calling Sequence: Call BVISC 

4.28.8.17 Subroutine Name: MBEAM 

1. Entry Point: MBEAM 

2. Purpose: To generate an element mass matrix for a BEAM element. 

3. Calling Sequence: CALL MBEAM 

4.28.8.18 Subroutine Name: MCR0O 

1. Entry Point: MCR(3D 

2. Purpose: To generate the "consistent" (coupled) element mass matrix for any of the 
elements listed under calling sequence. 

3. Calling Sequence: CALL MCR0D (lARG) 

1 - R0D 
lARG = <; 1 - C0NR0D 
3 - TUBE 

4.28.8.19 Subroutine Name: MTRBSC 

1. Entry Point: MTRBSC 

2. Purpose: To generate the "consistent" (coupled) element mass matrix for a basic bending 
triangle element. 

3. Calling Sequence: CALL MTRBSC 



4.28-8 (12-1-69) 



MODULE FUNCTIONAL DESCRIPTIONS 

4.28.8.20 Subroutine Name: MTRPLT 

1. Entry Point: MTRPLT 

2. Purpose: To generate the "consistent" (coupled) element mass matrix for a triangular 
plate element. 

3. Calling Sequence: CALL MTRPLT 

4.28.8.21 Subroutine Name: MQDPLT 

1. Entry Point: MQDPLT 

2. Purpose: To generate the "consistent" (coupled) element mass matrix for a quadrilateral 
plate element. 

3. Calling Sequence: CALL MQDPLT 

4.28.8.22 Subroutine Name: MTRIQD 

1. Entry Point: MTRIQD 

2. Purpose: To generate the "consistent" (coupled) element for any of the following 
elements: TRIAl , TRIA2, QUADl , QUAD2. 

3. Calling Sequence: CALL MTRIQD (lARG) 

1 - TRIAl element. 

2 - TRIA2 element. 
lARG = 

'3 - QUADl element. 

4 - QUAD2 element. 



4.28-8a (12-1-69) 



FUNCTIONAL MODULE SMA2 (STRUCTURAL MATRIX ASSEMBLER - PHASE 2) 

4.28.9 Design Requirements 

4.28.9.1 Open Core Design 

The open core design for SMA2 is the same as that in SMAl with the exception that /SMA2X/ 
defines the beginning of open core and only four buffers are needed, one each for MGG, BGG, 
ECPT and GPCT. 

4.28.9.2 Common Storage Requirements 

The common storage requirements for SMA2 are similar to those in SMAl. The common blocks 
/SMA2i;j/, /SMA2BK/, /SMA2CL/, /SMA2ET/ and /Sf1A2DP/ of SMA2 correspond to /SMAl 10/, /SMAIBK/, 
/SMAICL/, /SMAIET/ and /SMAIDP/ of SMAl. See the MFD for SMAl (see section 4.27.9). The 
following differences are worthy of note. 

1. In /SMA2I0/, words 15 and 16 are undefined and words 23 through 36 define matrix 
control blocks for MGG and BGG. 

2. /SMA2CL/ is only 131 words in length, the last two words of /SMAICL/ being reserved 
for variables unique to SMAl. 

4.28.9.3 Arithmetic Considerations 

Floating point arithmetic operations are carried out in double precision. Both [M ] 

99 

and [B ] are real symmetric double precision matrices. 

4.28.10 Diagnostic Messages 

See the diagnostic message section in the MFD for SMAl (section 4.27.10). 



4.28-9 (7/1/70) 



FUNCTIONAL MODULE GPWG (GRID POINT WEIGHT GENERATOR) 

4.29 FUNCTIONAL MODULE GPWG (GRID POINT WEIGHT GENERATOR) 

4.29.1 Entry Point : GPWG 

4.29.2 Purpose 

To compute the center of mass of the structure and find the principal inertias about a 
given point. 

4.29.3 DMAP Calling Sequence 

GPWG BGPDT,CSTM,EQEXIN,MGG/0GPWG/V,Y,GRDPNT/V,Y,WTMASS $ 

4.29.4 Input Data Blocks 

BGPDT - Basic Grid Point Definition Table. 

CSTM - Coordinate System Transformation Matrices. 

EQEXIN - Equivalance between external grid or scalar numbers and Internal numbers. 

MGG - Partition of mass matrix - g set. 

Notes: 1. BGPDT, EQEXIN and MGG cannot be purged. 

2. CSTM must be present if some grid point of the model is not in basic 
coordinates. 

4.29.5 Output Data Blocks 

0GPWG - Grid Point Weight Generator Output Table. 
Notes: This data block cannot be purged. 

4.29.6 Parameters 



GRDPNT - Input-integer-default = -1. GRDPNT selects the grid point about which the 

inertias will be calculated. If GRDPNT is not the external ID of a geometric 
grid point, the basic origin is used. 

WTMASS - Input-real-default = 1.0. WTMASS gives the ratio of mass to weight for the 
structure. All output quantities are in weight units. 



4.29-1 



MODULE FUNCTIONAL DESCRIPTIONS 

4.29.7 Method 

The Grid Point Weight Generator module calculates the masses, centers of gravity, 
and inertias of the general mathematical model of the structure. The data are extracted from 
the [M ] matrix by using a rigid body transformation calculation. Global coordinate dis- 
placements are converted to translations and rotations about a reference point. 

Because of the scalar mass effects, the total mass may have directional properties, 
and the center of gravity may not be a unique location. This effect is shown in the output 
by giving for each of the three masses its own direction and center of gravity. The inertia 
terms are calculated by using the directional mass effects. The axes about which the inertia 
terms are calculated may not intersect. However, these axes are those which provide un- 
coupled rotation and translation effects. This is the significance of the term "center of 
gravity". If the structural model has been constructed using only real masses, the three masses 
printed out will be equal, the center of gravity will be unique, and the axes of the inertia 
terms will intersect at the center of gravity. 
The actual computation proceeds in 4 parts. 

1. Computation of the [of matrix takes place in subroutine GPWGIA. Six vectors are formed 
which describe the six motions about the reference point. The matrix [D] formed from the 
vectors will describe rigid body displacements in global coordinates in terms of motion 
at the reference point: 

(u } = [D] {u } (reference point). (1) 

The method of generation is as follows: 

EQEXIN is placed in core and searched for GRDPNT to obtain its internal sequence 

number. If GRDPNT is not in EQEXIN or points to a scalar point, the basic origin is used. 

Assuming GRDPNT is a physical grid point, BGPDT is read to obtain {R^} for the reference 

point. The BGPDT file is then rewound. CSTM (if present) is placed in core and readied for u 

by subroutine PRETRS. Each grid point in the BGPDT is considered in order. If it is a 

scalar point, zero is stored in each of the six columns of [D] . 



If it is a grid point, 

{r.} = {R^} - {Rq} =|'"2| ' ^2) 



4.29-2 



FUNCTIONAL MODULE GPWG (GRID POINT WEIGHT GENERATOR) 



,th 



is computed where {R^} is the location of the i grid point and {R } is the location of 
the reference point. 

The transformation matrix to the grid point, 



[T,] 



rg -r^ 



■•"3 ^1 
L^2 -•'l . 



(3) 



is formed. Subroutine TRANSS calculates the 3x3 transformation matrix [T.] from global 
coordinates to basic coordinates for the grid point. The matrix 



[d] = 



T.' ' T.' T 
1 I 1 r 



° : ^i' 



(4) 



is computed. The rows of [d] form the columns of [D]^ and are packed out onto a scratch 
file. 

2. If all points were scalar points, GPWG returns; otherwise subroutine TRANPl is 
called to form [D] from [D]^. 

3. [M ] is computed by two calls to subroutine SSG2B, 



[Mq] = [D]^ [Mgg] [D]. 



4. Output quantities are computed as follows: 



Mq is unpacked, output and partitioned as follows: 



[M,]= 






(The matrix is symmetric). 

A check is made for inconsistent scalar masses. Let 

5 = |det [M*]|, 
and 



(5) 



(6) 



(7) 



E =• V2:(FT.J)2 i ^ J. 



(8) 



4.29-3 



MODULE FUNCTIONAL DESCRIPTIONS 

If _£ > 10"^, the coordinates should be rotated. Otherwise [S] = [I]. If rotation 

6 

is necessary, the eigenvectors of [M*], {e^} , {e2} , and {63}, are determined by the 
Jacobi technique. Define 

[S] = [ {e^} . {62} . {63} ]. (9) 

The [S] matrix is output, [M*], [m""] and [M^""] are computed as follows: 

[M*] = [sf [M*] [S], (10) 

[M^""] = [sf [Ff*""] [S], (11) 

[m""] = [Sf [M^] [S], (12) 

The follovt'ing terms are calculated and output: the mass terms: 

(13) 
(14) 

(15) 

i. jj 

and the "centers of gravity": 

t = 11 Y = — li— 7 = J^ (16) 

X A A 

Mo^ ^To -^Ti 

The inertias are: 

h^ - "n - ^ ^y - ^ 'I ' ^''^ 

^21 = X2 - "z h \ ' ^20) 

h^ = < - ^^h' ^21) 

^22 = ^22 - ^ '^z - \ i ' (22) 



4,29-4 



\ 


= 


^11- 


^ 


= 


M22. 


^ 


= 


M53. 



FUNCTIONAL MODULE GPWG (GRID POINT WEIGHT GENERATOR) 

^23 = -"23 - \ \ \ . (23) 

I33 = "53 - W^ - y/ ' (24) 

These terms form the symmetric matrix [I], 
For principle inertias eigenvalues and eigenvectors are found such that: 



Ml tP 

22 

iP 
^33 



[Q]^ [I] [Q]. (25) 



[Q] contains the normalized eigenvectors (the directions of the principal inertias), and 
the iP. terms are the eigenvalues. The matrices [S] and [Q] are actually coordinate 
rotation matrices and show the directions of the principal masses and inertias. 

4,29.8 Subroutines 

Utility Subroutines PRETRS.TRANSS.TRANPl ,SSG2B and GMMATS are used. See subroutine 
descriptions, section 3. 

4.29.8,1 Subroutine Name: GPWGIA 

1. Entry Point: GPWGIA 

2. Purpose: To form the [D]^ matrix. 

3. Calling Sequence: CALL GPWG1A(P0INT,BGPDT,CSTM,EQEXIN,DT,N0G0) 

P0INT - External grid point id of reference point - integer - input. 

BGPDT - GIN0 file number of 0GPWG - integer - input, 

CSTM - GIN0 file number of CSTM - integer - input. 

EQEXIN - cm file number of EQEXIN - integer - input. 

°^ - "^INU file nutitoer of file on which [D]^ will be written - integer - input. 

N0Gia - Flag for all scalar problem - integer - output. N0G0 = implies all 
scalars. 

4.29.8.2 Subroutine Name: GPWGIB 

1. Entry Point: GPWGIB 



4.29-5 //t> 



MODULE FUNCTIONAL DESCRIPTIONS 

2. Purpose: To form output quantities as given in paragraph 4 of section 4.29.7. 

3. Calling Sequence: CALL GPWGIB (M0,0GPWG,WTMASS,IP) 

Mj8 - GIN0 file number of [M^^] matrix - integer - input. 

0GPWG - GIN0 file number of 0GPVJG - integer - input. 

ViTMASS - Mass to weight ratio parameter - real - input. 

IP - External grid point id of reference point (=0 if basic origin was used) 

- integer - input. 

4.29.8.3 Subroutine Name: GPW61C 

1. Entry Point: GPWGIC 

2. Purpose: To compute eigenvectors and values of a 3 by 3 matrix by the classical Jacobi 
method. 

3. Calling Sequence: CALL GPWGIC (B.E.EV.IFLAG) 

B - 3 by 3 input matrix - real - input. 
E - 3 by 3 matrix of eigenvectors - real - output. 
Ev - 3 eigenvalues - real - output. 

IFLAG - Error termination flag - integer - output. If IFLAG > 0. GPWGIC could 
not converge. 



4.29.9 Design Requirements 

GPUG requires four scratch files. Open core for GPWGIA is defined at /GPWGAl/. Open 
core for GPWGIB is defined at /GPWGBl/. 

The layout of open core is as follows: 

C0MM0N /GPWBGl/ 



CSTM 



1 BGPDT entry 



CSTM Data Block 
16 words per entry 

GIN0 buffer 



4.29-6 



FUNCTIONAL MODULE GPWG (GRID POINT WEIGHT GENERATOR) 



C0MM0N /GPWGAl/ 




36 words for 5 by 6 matrix 



GIN0 buffer 



4,29.10 Diagnostic Messages 



The following fatal error messages may occur: 3007, 3008. 



4.29-7 



FUNCTIONAL MODULE SMA3 (STRUCTURAL MATRIX ASSEMBLER - PHASE 3) 

4.30 FUNCTIONAL MODULE SMA3 (STRUCTURAL MATRIX ASSEMBLER - PHASE 3) 

4.30.1 Entry Point : SMA3 

4.30.2 Purpose 

To generate the final stiffness matrix, [K ], by generating a matrix of order g for each 
general element in the model, and successively adding this matrix to [K^ ], the stiffness matrix 
exclusive of general elements. 

4 . 30 . 3 DMAP Calling Sequence 

SMA3 GEI,KGGX/KGG/V,N,LUSET/V,N,N0GENL/V,N,N0SIMP $ 

4.30.4 Input Data Blocks 

GEI - General Element Input. 

KGGX - Partition of stiffness matrix exclusive of general elements - g set. 

Note : 

1. GEI cannot be pre-purged. 

2. KGGX may be pre-purged. This implies that the model consists entirely of general 
elements (i.e., there are no simple elements). 

4.30.5 Output Data Blocks 

KGG - Partition of stiffness matrix - g set. Contains contributions from all elements 
in the model, including general elements. 

Note : KGG may not be pre-purged. 

4.30.6 Parameters 

LUSET - Input-integer-no default value. LUSET is the total number of degrees of 
freedom in the g displacement set. It is the order of the [k'' 1 and [K 1 

gg gg 

matrices. 

N0GENL - Input-integer-no default value. N0GENL is the number of general elements in 
the GEI data block. 



4.30-1 



MODULE FUNCTIONAL DESCRIPTIONS 



N0SIMP - Input-integer-no default value. If N0SIMP < 0, [K ] does not exist, i.e., all 
elements of the model are general elements. If N0SIMP > 0, [K^ ] does exist, 

4.30.7 Method 



4.30.7.1 Mathematical Considerations 

Two matrices can be used to form a stiffness matrix for each general element in the GEI 
data block: a flexibility influence coefficient matrix, [Z], and a rigid body matrix, [S]. 
The former must be present and must be non-singular; the latter may or may not be present. 
The set of degrees of freedom (scalar index numbers) used by [Z] is designated the "u-" set; 
the set of degrees of freedom used by [S] is designated the "u^" set. Call the length of the 
u. set m, and call the length of the u^ set n. [Z] is m by m, and [S] is m by n. 

For each general element in the model, the stiffness matrix correspondinn to the general 
element, [K^^J, is made up of four partitions if the u^ set exists. They are: 

■,-1 



[K.,] 



[z]- 



tS-d^ 



-It 



- [z]-'[s] , 



(0 

(2) 
(3) 
(4) 



The four matrices must be merged such that 1): 



[k9^] 



^i i ^d 



"di 



^ddJ 



(5) 



and 2) the rows and columns of [K^^] must correspond to a merged list of both u- and u^ 
coordinates in order of ascending scalar index numbers. 



If the u . set does not exist, then 



[K^^] = [K,-i] 



[z]- 



(6) 



4.30-2 



FUNCTIONAL MODULE SMA3 (STRUCTURAL MATRIX ASSEMBLER - PHASE 3) 

4.30.7.2 Initialization 

The GEI data block is opened, and the header record is skipped. It is determined whether 
the number of general elements, f, is even or odd. This is done to insure that the result of 
the final matrix addition, 

where 



[k'^'] = LC] + 'l [k9^^] . (8) 

yy 1=1 
and [K^^ ] is the final general element matrix, will be written on the output data block, KGG. 

If [K ] does not exist, and there is only one general element, then the GIN0 file number 
(201) for the KGG data block is stored in IFA, the variable which contains the GIN0 file number of 
the file onto which the current [K^^] matrix will be packed. 

The principal logic of the module driver, SMA3. is carried out in a loop in which, during 
each pass of the loop, a [K^^] matrix is generated and added, using subroutine SSG2C, to the 
running sum matrix, [K*"^]. 

4.30.7.3 Generation and Addition of a General Element Matrix 

The steps involved in the principal loop of the program are as follows: 

1. The loop counter is incremented. 

2. The first three words of the next logical record are read from GEI: the element id; 
the length of the u^- set, m; and the length of the u . set, n. 

3. The matrix control blocks for the scratch files IFB and IFC are interchanged 
provided that: 

a. this is not the first pass through the loop; 

b. this is not the second pass through the loop and^ the number of nereral element 
is odd and there are only general elements in the model; 

and 

c. this is not the second time through the loop and [K^ ] exists. 



4.30-3 



MODULE FUNCTIONAL DESCRIPTIONS 

4. It is determined whether the orders of the [Z] and [S] matrices are such that the 
in-core matrix routines GMMATD and INVERD can be used. This is accomplished as follows. 
Define 

p = 2{m + n + m^ + n^ + 2mn) , (9) 

q = 2(m + n + m^) + 3m , (10) 

and 

r = max(p,q) . (11) 

p is the number of computer words needed to store: 1) the u^. and u^ sets in two 
different sorts; 2) the double precision m by m [Z] matrix; 3) the double precision 
n by n [S]^[Z]"^[S] matrix; and 4) the double precision m by n [S] matrix and the double 
precision m by n [Z]" [S] matrix. 

q is the number of computer words needed to store: 1) the u^ and u^ in two different 
sorts; 2) the double precision m by m [Z] matrix; and 3) 3m cells of scratch storage 
to be used by subroutine INVERD. 

If r is less than the available amount of core, the in-core routine, SMA3A, is called 
to compute [K^®]. Otherwise: 1) SMA3B generates [Z] and - [S]^; 2) FACT0R decomposes 
[Z] into its triangular factors; 3) SSG3A computes [Z]"'; 4) SSG2B computes - [S] [Z]; 
5) TRANPl transposes - [S]^; 6) SSG2B computes -[Z][S]^; 7) SSG2B computes [S]^[Z]' [S]; 
and 8) SMA3C builds the final [K^^] matrix of order g by g. 

5. The matrix [K^^] having been generated as in step 4, SSG2C is called to add [K^^] to 

4.30.8 Subroutines 

Utility routines GMMATD, INVERD, FACTOR. SSG3A, SSG2B, TRANPl and SSG2C are used in this 
module. 



'1 9 ' 

4.30-4 ' "~ 



FUNCTIONAL MODULE SMA3 (STRUCTURAL MATRIX ASSEMBLER - PHASE 3) 

4.30.8.1 Subroutine Name: SMA3A 

1. Entry Point: SMA3A 

2. Purpose: To build a g by g general element matrix, [K^^], using the in-core matrix 
routines GMMATD and INVERD. 

3. Calling Sequence: CALL SMA3A (MCBA) 

C0MM0N /GENELY/ - see description below (section 4.30.9.2). 

MCBA - The matrix control block corresponding to [K^^]. Word 1 is input; words 
2 through 7 are output. 

4. Method: The u^ set and the u. set (if present) of scalar index numbers are read into 
core, and a list L is formed of length m + n, such that L(k) = l implies the il^*^ entry 

of the string: <^>J-j ]."•,- 2 "im'"dr"d2" " "'"dn^ ^^ *^® smallest. The m single 

precision elements of [Z] are read and stored at double precision locations. [Z]" is 
computed using INVERD. [S], if present, is read and stored at double precision locations. 
GMMATD is called twice to compute [Z]"^[S] and [S]^[Z]"^[S]. The elements of [K^^], as 
defined in Equation 5, are output to the GIN0 file corresponding to MCBA(l) with non-zero 
terms in the row and column positions specified by the u- and u» sets. The list L 
determines the sequence of elements to be output for any one column. 

4.30.8.2 Subroutine Name: SMA3B 

1. Entry Point: SMA3B 

2. Purpose: To create [Z] and [S] from the GEI data. 

3. Calling Sequence: CALL SMA3B (IFLAG) 

C!JMM0N /GENELY/ - see description below (section 4.30.9.2). 

IFLAG _il'''-AG = -1 implies [S] does not exist.) ,„4.»n»- «.,+„.,+ 
^^^'^^ ) IFLAG = 1 implies [S] exists. J - integer - output. 

4. Method: The GEI data block is read for the row numbers and non-zero terms of [Z]. 
These are output in standard NASTRAN matrix format by subroutine BLDPK. - [S]^ is generated 
in a similar manner. (- [S] is created rather than [S] for computational ease in subse- 
quent calculations - see paragraph 4 in section 4.30.7.3 above). 



4,30-5 



MODULE FUNCTIONAL DESCRIPTIONS 

4.30.8.3 Subroutine Name: SMA3C 

1. Entry Point: SMA3C 

2. Purpose: To create the [K^^] matrix from [Z]-\ - [Z]"^[S], - [sf [Z]"'' and [sf [Z]"'' [S]. 

3. Calling Sequence: CALL SMA3C (IFLAG, KE) 

C0MM0N /GENELY/ - see description below (section 4.30.9.2). 
C0I#I(3N //LUSET - size of problem. 

IFLAG is as described in SMA3B. Here it implies [K^^] = [Z]' . 
KE - Matrix control block for [K^^] - integer - input/output. 

4. Method: A matrix of g size is created from [Z]'\ - [Z]"^[S], - [S]^[Z] and [S]^[Z]"^[S] 
with the non-zero terms in the row and column positions specified by the u^ and u^ lists. 
This matrix can be added to the existing [k""^] to reflect the stiffness terms of this 
general element. 

4.30.8.4 Block Data Subprogram: SMA3BD 

Purpose: To initialize the GIN0 file numbers and GIN0 options indicators in /GENELY/, 
which is discussed below. 

4.30.9 Design Requirements 

4.30.9.1 Open Core Design 

The open core common block for the module driver SMA3 and subroutine SMA3A is defined by 
the following F0RTRAN statements: 

1. D(3UBLE PRECISION DQd) 

2. INTEGER IQ{1) 

3. DIMENSION Q(l) 

4. C0MM0N /GENELX/ Q 

5. EQUIVALENCE (iq(l ) ,DQ(1 ) ,Q(1 )) 

SMA3 uses open core only for one GIN0 buffer, which is reserved for the GEI data block while 
SMA3A, SMA3B, or SMA3C is executing, and which is reserved for use by SSG2C when this routine 
adds [K^^] to [k""^] at the end of the principal loop in the driver. 



4.30-6 



FUNCTIONAL MODULE SMA3 (STRUCTURAL fWRIX ASSEMBLER - PHASE 3) 

SMA3A uses low order open core as outlined in paragraph 4 in section 4.30.7 above. 

The open core for subroutine SMA3B is defined at /SMAB3/ and is used for two GIN0 buffers 
in high order open core. 

The open core for subroutine SMA3C is defined at /SMAC3/ and is used for: 1) the u. and u. 
sets in low order open core and 2) six GIN0 buffers in high order open core. 

4.30.9.2 Comnwn Storage Requirements 

The common block /GENELY/ is used for; 1) GIN0 file numbers; 2) GIN0 option indicators; 
3) matrix control blocks; and 4) zero pointers to sub-arrays in /GENELX/ when SMA3A executes. 
It is defined as follows: 

C0MM0N /GENELY/ IFGEl ,IFKGGX,IF(3UT,IFA,IFB,IFC,IFD,IFE,IFF,INRV;,0UTRW,CLSR!-J,CLSNRW,EPIR, 

NE0R,MCBA(7),MCBB(7),MCBC(7),MCBE(7),MCBF(7),MCBKGG(7),IUI,IUD,IZI,IS,IZIS,ISTZIS,IBUFF3(3), 

LEFT 



Variable 
IFGEI,IFKGGX,IF(3UT 

I FA 

IFB.IFC 

IFD.IFE.IFF 
INRW,0UTRW,CLSRW,CLSNRW,E0R,NE0R 

MCBA.MCBB MCBF.MCBKGG 

lUI.IUD.IZI.IS.IZIS.ISTZIS 



IBUFF3(3) 
LEFT 



Definition 



GIN0 file numbers for the two input data blocks 
and the output data block respectively. 

GIN0 file number for the current [K^^] being 
computed. 

GIN0 file numbers for [k""^] and [k""^] + [K^^] 
matrices. They are "flip-flopped" such that 
IFC = IF0UT for the final matrix addition. 

GIN0 file numbers for scratch files which are 
used in subroutine SMA3C. 

GIN0 option indicators as defined in section 
4.27.9.3. 

Matrix control blocks for the matrices corres- 
ponding to IFA, IFB IFF, and IFKGXX. 

Zero pointers to the sub-arrays in /GENELX/ , 

corresponding to: 1) u^. set; 2) u^ set; 3) [Z]" 

4) [S]; 5) [zr^[S] and 6) [sf [Z]-''[S]. Note 
that IZI, IZIS, ISTZIS are zero pointers into 
double precision arrays. 

Three word buffer which contains the general 
element id, m and n. 

The number of computer words currently remaining 
in /GENELX/. 



4.30-7 



MODULE FUNCTIONAL DESCRIPTIONS 

4.30.9.3 Arithmetic Considerations 

All floating point arithmetic operations are carried out in double precision. 
4.30.10 Diagnostic Messages 

In SMA3A, system fatal error 2028 can occur. See section 6 of the User's Manual for details. 



4.30-8 



FUNCTIONAL MODULE GP4 (GEOMETRY PROCESSOR - PHASE 4) 

4.31 FUNCTIONAL MODULE GP4 (GEOMETRY PROCESSOR - PHASE 4) 

4.31.1 Entry Point : GP4 

4.31.2 Purpose 

GP4 assembles the various displacement sets and builds the displacement set definition 
table (USET). Additionally, for statics problems, GP4 analyzes subcases based on single-point 
and multipoint constraint sets, and sets parameters to control execution of the Rigid Format. 

4.31.3 DMAP Calling Sequence 

GP4 CASECC,GE(3M4.EQEXIN,SIL,6PDT/RG,YS,USET/V,N,LUSET/V,N,MPCF1/V,N,MPCF2/V,N. SINGLE/ 
V,N,!3MIT/V,N,REACT/V,N,NSKIP/V,N,REPEAT/V,N.N0SET/V,N,N0L/V,N,N0A $ 

4.31.4 Input Data Blocks 

CASECC - Case Control Data Table. 

GE0M4 - Displacement set definitions. 

EQEXIN - Equivalence between external grid or scalar and internal numbers. 

SIL - Scalar Index List. 

GPDT - Grid Point Definition Table. 

Note : Only GE0M4 may be purged. 

4.31.5 Output Data Blocks 

RG - Multipoint constraint equations matrix. 
YS - Constrained displacement vector(s) set. 
USET - Displacement set definition table. 

Note : YS may be purged. 

4.31.6 Parameters 

LUSET - Input-integer-no default. Degrees of freedom in the g-displacement set. 
MPCFl - Output-integer-no default. +1 if the current subcase contains multipoint 
constraints, -1 otherwise. 



4.31-1 



MODULE FUNCTIONAL DESCRIPTIONS 

IIPCFZ - Output; integer, no default. +1 if the current subcase contains a different 

multipoint constraint set from last the subcase, -1 if no new multipoint constraint 
set or no multipoint constraints in the current subcase. 

SINGLE - Output, integer, no default. +1 if the current subcase contains single-point 
constraints, -1 otherwise. 

(3MIT - Output, integer, no default. +1 if the model contains omitted coordinates, 
-1 otherwise. 

REACT - Output, integer, no default. +1 if the model contains supports, -1 otherwise. 

NSKIP - Input and output, integer, default = 0. Number of records to skip to reach 
the first record in the Case Control Data Block for the next subcase. 
(NSKIP = for the first subcase). 

REPEAT - Output, integer, no default. -1 if the current subcase is the last subcase in the 
problem, +1 otherwise. 

N0SET - Output, integer, no default. -1 if MPCFl = -1 and SINGLE = -1 and 0MIT = -1 
and REACT = -1 , +1 otherwise. 

N0L - Output, integer, default = +1. -1 If aJJ_ degrees of freedom in the model 

belong to dependent displacement sets (i.e. no degree of freedom belongs to 
an independent set), +1 otherwise. 

N0A - Output, integer, default = +1 . -1 if MPCFl = -1 and SINGLE = -1 and 0MIT = -1, 
+1 otherwise. 

4,31.7 Method 

CASECC is read for each case and subcase. Parameters are set to control the return 
point for the next subcase. The user-requested constraint set numbers are extracted and 
saved for control of the following steps. 

The multi-point constraint cards (MPC) each define a row of a constraint matrix equation: 

For each requested MPC set, the MPC card images are read from GE0M4, and tne grid points 
and their scalar coordinates (or scalar points) are converted to the scalar degree of freedom 

4.31-2 



FUNCTIONAL MODULE GP4 (GEOMETRY PROCESSOR - PHASE 4) 

numbers. The EQEXIN and SIL data blocks are placed in core, the point "id" number is found as the 
first entry of a pair in the first record of EQEXIN, the corresponding number in the second entry 
of the pair is the internal grid point index. The i position of the SIL contains the value of 
the scalar degree of freedom number for the first degree of freedom of point i. The SIL value, 
SIL , for the component c, (c=l,2 6) of a grid point p is found by the equation: 



SIL^ = SILp + (c - 1) . (2) 

The SIL of a point is the scalar index of its first degree of freedom. The point "id's" 

and components given on the MPC cards are converted to scalar index numbers, a sorted list is 

formed of the u scalar indices, (see defintion belovj of the sets defined in USET) , and the 

m 

data are written on SCRl , a scratch file. Each term in the equation is paired with a packed 
word giving its equation number and its SIL value. The equation data are now sorted to group 
the data by each scalar index number in order of increasing dependent u point number. This 
essentially creates a column stored matrix [R ] . Each row in the matrix corresponds to 
a u point. Each column corresponds to a unique scalar index (u point). 

The SUP0RT (u ) and jiMIT (u ) card images are read from GE0M4. The grid and component 

numbers are sorted and written on SCRl. The 6PDT is read, and a list is formed of the permanent 

single-point constraints (u ) which were identified on the GRID bulk data cards. This list is 
written on SCRl . 

The SPCADD, SPCl and SPC bulk data card images identify the sets of single-point 
constraints used as boundary points (u . ) and include any possible constrained displacement 
values (Y ). The user-requested sets of SPC cards are extracted from the CASECC data block 
and the SPCADD cards. The requested SPC and SPCl card images are read, the grid and component 
"id" numbers are converted to scalar indices, and a paired list of scalar indices and their 
corresponding displacement values is written on SCRl. The non-zero Y values formed in the 
previous step form a packed vector with indices given by their position in the list. This is 
the YS data block, a vector packed relative to the u set. 

The USET data blocl; contains one coded word for each scalar degree of freedom in the 
entire structure. The word is coded to identify the set or sets of coordinates to which 
the scalar degree of freedom belongs (see section 2.3.13). An area of core is set equal to 



4.31-3 



MODULE FUNCTIONAL DESCRIPTIONS 



zero, and the lists of u„, u„, u„ and u, points are read from SCRl. The scalar index of a 

' m r s '^ 

coordinate corresponds to a position in core. The word in that position is modified to 

identify the set to which that scalar index belongs. With the u , u , u and u paints 

known, the u„, u„, u,, u, and u. points may be identified. The "nesting" of these sets 
g n T a x* 

follows the scheme: 



"m 



"s 



U. I I /-g 



"a 



USET is written as one logical record on the USET data block. 

The final operation is to process each degree of freedom in USET to insure that the 
displacement set definitions are consistent. The governing rule (as may be noted in the 
nesting scheme) is that each degree of freedom may belong to at most one dependent subset. 
If any inconsistant definitions are found, they are written on SCRl. When each point has 
been analyzed, EQEXIN and SIL are read into core. Then SCRl is read, and, for each entry, 
an error message is queued. PEXIT is then called to abnormally terminate GP4. 

4.31.7.1 Definitions of the Sets Defined in USET 

u - All structural degrees of freedom defined by grid and scalar points. 

u - Dependent coordinates used in the multipoint constraint equations. Defined 
as the first degree of freedom of a MFC card. 

u - All structural degrees of freedom except u . 

u - All fixed points. The u points are defined by the GRID cards and have a dis- 
placement of zero. The u . points are defined by the SPC cards and may have a 
constrained displacement. 



4.31-4 



FUNCTIONAL MODULE GP4 (GEOMETRY PROCESSOR - PHASE 4) 

u, - An degrees of freedom in the structure except u and u , 

u - These are "omitted coordinates" defined by 0MIT and 0Mm cards. In statics, 
the structural matrix is partitioned, and these degrees of freedom are solved 
separately. In dynamics, the displacements of these points are approximated by 
their static displacements under mass loads. 

u - These are the unconstrained degrees of freedom of the system. They include 
a 

rigid body modes in dynamics. 

u - These are fictitious supports defined by the SUP0RT cards. In dynamics and 

inertia relief the elastic displacements are measured relative to these points. 

u. - This set includes all degrees of freedom not defined by the u , u , u and u^ 
points. The stiffness matrix defined by these points is used for the solution 
of displacements versus loads. 

4.31.8 Subroutines 

The module GP4 consists of one subroutine, GP4. 

4.31.9 Design Requirements 

The maximum storage requirement for GP4 is one word per degree of freedom (i.e., LUSET = 6* 
(number of grid points) + number of scalar points) plus one GINj) buffer. Its open core is 
defined by /GP4C0R/. Two scratch files are used by GP4. 

4.31.10 Diagnostic Messages 

The following messages may be issued by 6P4: 

2047, 2048, 2049, 2050, 2051, 2052, 2053, 2101, 3008 



4.31-5 



FUNCTIONAL MODULE GPSP (GRID POINT SINGULARITY PROCESSOR) 

4.32 FUNCTIONAL MODULE GPSP (GRID P0INT SINGULARITY PR0CESS0R) . 

4.32.1 Entry Point : GPSP. 

4.32.2 Purpose 

The GPST data block contains data on possible stiffness matrix singularities. These singu- 
larities may be removed through the application of single or multipoint constraints. The GPSP 
module checks each singularity against the list of constraints, and if the singularity is not 
removed, writes data for warning the user. 

4.32.3 OMAP Calling Sequence 

GPSP GPL, GPST, USET,SIL/0GPST $ 

4.32.4 Input Data Blocks 

GPL - Grid Point List. 

GPST - Grid Point Singularity Table. 

USET - Displacement set definitions table. 

SIL - Scalar Index List. 

Note: No input data block can be purged. 

4.32.5 O utput Data Blocks 

0GPST - Unremoved Grid Point Singularities. This data block will be processed by the {!)rP 
(Output File Processor) module. 

4.32.6 Parameters 
None. 

4.32.7 Method 

USET is read into core. The USET data block contains one word for each degree of freedom in 
the structural model. This word identifies the displacement coordinate sets to which the coordi- 
nate belongs. Each entry in the GPST data block contains the order of the singularity and the 
scalar index numbers of the degrees of freedom involved. The logic of the algorithm depends on 
the order of the singularity. For each type the logic is: 

1. If order =1, th